分类:
2011-12-18 13:35:56
这几篇Android 3D游戏开发的文章原文出自一位德国人Martin在droidnova.com写的文章,有lixinso翻译为中文。
这个系列的第四部分讲如何给三角形添加颜色。
在 上一部分我们创建了第二个静态的三角形来验证我们旋转的是三角形而不是整个场景。这里我们将这个静态的三角形删除掉。删除掉 initStaticTriangle()函数,删除两个buffer,_indexBufferStatic和 _vertexBufferStatic。同时也要删除原来初始静止三角形时用到的onDrawFrame()中的最后四行。
新的onDrawFrame()方法如下:
现在我们为保存颜色信息创建一个新的buffer。这个_colorBuffer是一个对象变量,但是我们需要在initTriangle()方法中定义颜色并填充这个buffer.
我 们创建了一个FloatBuffer类型的对象变量_colorBuffer(第四行)。在initTriangle()方法中我们为新的颜色 buffer分配了足够多的内存(19-21行)。接下来我们创建了一个float数组(23-27行),每个顶点有4个值。 这个结构是RGBA(Red,Green,Blue,alpha)的,所以第一个顶点是红颜色,第二个颜色是绿色,第三个颜色是蓝色。最后两部和 _vertexBuffer相同。我们将颜色数组放到buffer里面,将buffer的position设置为0.
当这些准备工作都做完了以后,我们开始告诉OpenGL ES使用我们的颜色数组。这通过glEnableClientState(),以及glColorPointer()来完成,和vertexBuffer类似。
第五行我们enable了color mode。在17行我们设置了颜色 pointer。参数4表示RGBA(RGBA刚好是四个值),其余的几个参数大家都比较熟悉了。
也许你也看到了,我们注释掉了15行,因为我们使用的是color mode,所以不再需要glColor4f。它会覆盖,所以我们可以注注释掉或者删除掉他。
Eclipse工程源代码参考: Vortex Part IV