Android OpenGL ES 2.0 手把手教学(1)- Hello World!

大家好,下面和大学一起学习Android OpenGL ES 2.0的入门Hello World,在我的github上有一个项目OpenGLES2.0SamplesForAndroid,我会不断地编写学习样例,文章和代码同步更新,欢迎关注,链接:https://github.com/kenneycode/OpenGLES2.0SamplesForAndroid

下面开始我们的Hello World之旅,我们将渲染一个三角形,为什么要渲染一个三角形呢?三角形在OpenGL中是很重要的,实际上我们看到的那些复杂图形,它们在OpenGL里都 是通过多个三角形组合而成的,因此我们先来学习如何渲染一个三角形~

要在Android上进行OpenGL渲染,首先要有GL环境,什么是GL环境?后面我会写文章解析,现在只需要知道有这回事就行了。为了简单起见,我们直接使用Android的GLSurfaceView,它就自带了GL环境。

我们在layout中写一个GLSurfaceView然后find出来,这是Android的常规操作,就不多做解释了。然后给GLSurfaceView做一些配置,现在暂时不用管这些配置的用途,后面也会有文章解析~

val glSurfaceView = findViewById<GLSurfaceView>(R.id.glsurfaceview)
// 设置RGBA颜色缓冲、深度缓冲及stencil缓冲大小
// Set the size of RGBA、depth and stencil buffer
glSurfaceView.setEGLConfigChooser(8, 8, 8, 8, 0, 0)
// 设置GL版本,这里设置为2.0
// Set GL version, here I set it to 2.0
glSurfaceView.setEGLContextClientVersion(2)

然后给GLSurfaceView设置Renderer,这个Renderer就是用于做渲染的,可以把GLSurfaceView理解成就是一块画板,具体怎么画,是在Renderer里做的

glSurfaceView.setRenderer(SampleHelloWorld())

我们让SampleHelloWorld实现GLSurfaceView.Renderer接口,将渲染逻辑写在SampleHelloWorld中,共有3个方法需要实现:

class SampleHelloWorld : GLSurfaceView.Renderer {
   

    override fun onDrawFrame(gl: GL10?) {
   
    }

    override fun onSurfaceChanged(gl: GL10?, width:

你可能感兴趣的:(OpenGL,ES,2.0,OpenGL,Android,GPU,渲染)