文档介绍:程序更新与Android201兼容。如果你刚刚接触这系列文章,请先阅读第一部分。第四部分会介绍如何向三角形添加多种颜色。在上一个部分我们创建了另一个静态的三角形来证明只有三角形旋转而不是整个视图。我们现在移除这个静态三角形包括与它相关的代码。***@OverridepublicvoidonDrawFrame(GL10gl){//定义我们打算在背景上显示的图形颜色glglClearColor(_red,_green,_blue,10f);//重设矩阵,使得旋转的角度是一定的glglLoadIdentity();//清除绘图缓冲区glglClear(GL10GL_COLOR_BUFFER_BIT);//设置旋转的角度不定glglRotatef(_angle,0f,1f,0f);glglColor4f(05f,0f,0f,05f);glglVertexPointer(3,GL10GL_FLOAT,0,_vertexBuffer);glglDrawElements(GL10GL_TRIANGLES,_nrOfVertices,GL10GL_UNSIGNED_SHORT,_indexBuffer);}现在我们创建了一个新的缓冲区来保存颜色信息。_colorBuffer缓冲区是一个对象变量,但是我们需要定义颜色以及当我们初始化其他缓冲区时填充该缓冲区,这些在我们的initTriangle()函数中完成。//codesnipped//来存储颜色的缓冲区privateFloatBuffer_colorBuffer;//codesnippedprivatevoidinitTriangle(){//floathas4bytesByteBuffervbb=ByteBufferallocateDirect(_nrOfVertices*3*4);vbborder(ByteOrdernativeOrder());_vertexBuffer=vbbasFloatBuffer();//shorthas2bytesByteBufferibb=ByteBufferallocateDirect(_nrOfVertices*2);ibborder(ByteOrdernativeOrder());_indexBuffer=ibbasShortBuffer();//floathas4bytes,4colors(RGBA)*numberofvertices*4bytesByteBuffercbb=ByteBufferallocateDirect(4*_nrOfVertices*4);cbborder(ByteOrdernativeOrder());_colorBuffer=cbbasFloatBuffer();float[]coords={-05f,-05f,0f,//(x1,y1,z1)05f,-05f,0f,//(x2,y2,z2)05f,05f,0f//(x3,y3,z3)};float[]colors={1f,0f,0f,1f,//point10f,1f,0f,1f,//point20f,0f,1f,1f,//point3};_vertexBufferput(coords);_indexBufferput(_indicesArray);_colorBufferput(colors);_vert