android学习笔记之3D---多边形着色(颜色)

来源:互联网 发布:js时间戳转换日期函数 编辑:程序博客网 时间:2024/05/08 16:28

     上次学习了绘制2D多边形,我们可以使用OpenGL通过顶点数据绘制出一些图形,但是可以看出我们绘制的图形都是单色的,可想而知我们没有对图形进行着色。

     对图形着色有两种方式:1. 光滑着色   2. 平面着色。

   

  平滑着色

     我们对上一个实例中的三角形进行平滑着色,是将三角形的三个顶点的不同颜色混合在一起,就是色彩的混色。

     首先为三角形的每个顶点设置一个颜色,和定义三角形数组相似。不同的是,颜色值有(r,g,b,a)

      r:red

     g:green

     b:blue

     a:alpha

           定义三角形的颜色数组为:

                         

和绘制多边形类似,我们使用颜色数组的时候也同样要开启颜色渲染功能。

      gl.glEnableClientState(GL10.GL_COLOR_ARRAY);

开启了颜色数组后,和glVertexPointer功能相似的是我们要将定义好的颜色数组渲染到多边形上去。

     gl.glColorPointer(4, GL10.GL_FIXED, 0, colorBuffer); //参数和glVertexPointer一样

最后,需要关闭颜色数组.

     gl.glDisableClientState(GL10.GL_COLOR_ARRAY);

 

 

单调着色

     单调着色会比平滑着色简单很多,实际上就是设置当前所使用的颜色,即设置当前颜色之后绘制的所有内容都使用这个颜色。即使是在完全采用纹理贴图的时候,仍然可以用调节纹理的色调

     现在我们只需将颜色依次性的设为理想的颜色(本例采用蓝色),然后绘制场景。这时绘制的每个顶点都是蓝色的。因为我们没有告诉OpenGL要改变顶点的颜色(glEnableClientState)。

     这时单调着色的代码是: gl.glColor4f(0.5f, 0.5f, 1.0f, 1.0f);//参数分别为red,green,blue,alpha

 

 

     注意:glColor4f不需要开启颜色渲染功能,因此,需要在调用glColor4f方法之前使用glDisableClientState方法关闭颜色渲染功能,否则glColor4f方法不起作用。

    

 

    

原创粉丝点击