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都是一样的。

 

(注:本教程转自其他网页,并加以修改,查看原网页请点击这里

posted @ 2017-03-25 10:19  落枫飘飘  阅读(1202)  评论(0编辑  收藏  举报