Android OpenGL教程-第三课【转】
第三课 给多边形上色:
作为第二课的扩展,我将叫你如何使用颜色。你将理解两种着色模式,在左图中,三角形用的是光滑着色,四边形用的是平面着色。
这次增加的代码不算多。
增加一个color的buffer
在OpenGLRenderer类中定义颜色数组:
private float[] mColorArray={ 1f,0f,0f,1f, //红 0f,1f,0f,1f, //绿 0f,0f,1f,1f //蓝 }; private FloatBuffer mColorBuffer;
在onDrawFrame函数中加入:
gl.glTranslatef(-1.5f, 0.0f, -6.0f); // gl.glColor4f(1f, 1f, 1f, 1f); 注释掉原来的三角形的红色 //设置定点数组 gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); //设置颜色数组 -- 开启颜色渲染功能. gl.glEnableClientState(GL10.GL_COLOR_ARRAY); //使用数组作为颜色 gl.glColorPointer(4, GL10.GL_FLOAT, 0, mColorBuffer); //数组指向一个buffer gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mTriangleBuffer); //绘制三角形 gl.glDrawArrays(GL10.GL_TRIANGLES, 0, 3);
在onSurfaceCreated函数中初始化mColorBuffer:
mColorBuffer = BufferUtil.floatToBuffer(mColorArray);
这样话出一个颜色渐变的三角形
画四边形加上这一句,就出来了蓝色的四边形
//关闭颜色数组 -- 关闭颜色渲染功能. (原文中没有这句,只有后面那句) gl.glDisableClientState(GL10.GL_COLOR_ARRAY); gl.glColor4f(0.5f, 0.5f, 1f, 1f);
好了,我今天无意中看到了一个IPHONE的opengles教程,和我的很类似,所以学学openggl是必要的,上层的什么平台不重要,用什么语言不重要,底层的opengl的代码和API都是一样的。
(注:本教程转自其他网页,并加以修改,查看原网页请点击这里)