OpenGL ES学习第四篇:先来试一个简单的渲染方式

OpenGL ES学习第四篇:先来试一个简单的渲染方式

本文你可以了解到

  • 定义一个渲染器基类
  • 使用Android封装好的EGL环境(GLSurfaceView)来渲染上篇文章中制作好的三角形纹理

OpenGL ES绘制分为三步

  • 定义纹理
  • 定义渲染器
  • 定义EGL环境

1. 定义一个渲染器

class SampleRenderer(private val texture: ITexture) : GLSurfaceView.Renderer {

    override fun onSurfaceCreated(gl: GL10?, config: EGLConfig?) {
        GLES20.glClearColor(0f, 0f, 0f, 0f)
        texture.surfaceCreated()
    }

    override fun onSurfaceChanged(gl: GL10?, width: Int, height: Int) {
        GLES20.glViewport(0, 0, width, height)
        texture.surfaceChanged(width, height)
    }

    override fun onDrawFrame(gl: GL10?) {
        GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT)
        texture.updateTexImage();
    }

    fun release() {
        texture.surfaceDestroyed()
    }
}
复制代码

渲染器内容比较简单,主要是在生命周期内回调纹理的生命周期方法,其中release方法目前无法嵌入到生命周期中,请暂时忽略

2. 使用GLSurfaceView通过渲染器,将三角形渲染出来

定义一个Activity页面,layout文件中只有一个GLSurfaceView

<android.opengl.GLSurfaceView
    android:id="@+id/glSurfaceview"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
复制代码

在Activity页面中,启动渲染

binding.glSurfaceview.setEGLContextClientVersion(2)
renderer = SampleRenderer(TriangleTexture())
binding.glSurfaceview.setRenderer(renderer)
binding.glSurfaceview.renderMode = GLSurfaceView.RENDERMODE_WHEN_DIRTY
复制代码

,,,,就结束了,简单的吧

image.png

分类:
Android