大家好,下面和大学一起学习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