知识点1:
OpenGL初始化时,需要定义两个OpenGL类型变量,一个是renderbuffer,另一个是framebuffer。简要说明一下,renderbuffer是一个2维结构,里面存一些数据(在此存的是颜色数据),framebuffer就不用说了,其中framebuffer是捆绑了多个renderbuffer的结构。
创建好framebuffer与renderbuffer后,紧接着就将它们与渲染通道进行绑定,当然我们也可以在后续操作中对其进行修改或取消绑定。绑定完成后,向EAGLContext的实例发送一个renderbufferStorage消息就可以创建一个storage
知识点2:
OpenGL的“clear”机制可以帮我们将buffer填充为单一纯色。首先选定填充的颜色为灰色,有四个值(红,黄,蓝,alpha)。接着就用选定的颜色填充buffer。使用
glClearColor(0.5f, 0.5f, 0.5f, 1);
定义颜色为灰色;使用
glClear(GL_COLOR_BUFFER_BIT);
将颜色清到缓冲区里面,即我们定义的renderbuffer;使用
[context presentRenderbuffer:GL_RENDERBUFFER_OES];
让EAGLContext对象将renderbuffer的内容显示到屏幕上。大多数的OpenGL程序都是先渲染到一个缓冲区内,然后以原子操作的方式显示到屏幕。
知识点3:
我们经常要用的点和颜色值,使用
glEnableClientState(GL_VERTEX_ARRAY);
启用顶点属性;使用
glEnableClientState(GL_COLOR_ARRAY);
启用颜色属性。之后,就需要向OpenGL传递顶点和颜色啦:
glVertexPointer(2, GL_FLOAT, sizeof(Vertex), vertices); glColorPointer(4, GL_FLOAT, sizeof(Vertex), colors);
接下来将绘制顶点和颜色:
GLsizei vertexCount = sizeof(Vertices) / sizeof(Vertex); glDrawArrays(GL_TRIANGLES, 0, vertexCount)
调用glDrawArrays这个方法的第一个参数为GL_TRIANGLES,第二个为0表示从顶点数组第一个位置开始,第三个参数vertexCount表示顶点个数。这个方法调用这前,得先调用gl*Pointer这样的方法获取顶点属性。
最后,将禁止顶点和颜色这两个属性,只有在绘制之前才会开启这些属性。在复杂的应用当中,可以在后续绘制中会用到复多的顶点属性,所以我们在用完顶点属性后得恢复到原始状态。由于我们这个应用简单,在此如果你不恢复也没事,但是我们得养成良好的编成习惯:
glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_COLOR_ARRAY);