Android3D游戏开发系列(2)色彩渲染和旋转

来源:互联网 发布:wampserver是什么软件 编辑:程序博客网 时间:2024/05/12 04:42
 

Android3D游戏开发系列(2)色彩渲染和旋转

下面我们来为我们绘制的三角形和正方形进行一个简单的操作,如色彩渲染和旋转。先看下运行效果:

1、  对图形的色彩渲染

        对图形进行着色主要有两种不同的着色方式,分别是:光滑着色和平面着色。如效果图所示,三角形使用了Smooth coloring(平滑着色)将三角形的三个顶点的不同颜色合在一起,创建出漂亮的色彩混合。而四边形则使用了Flat coloring(单调着色)涂上一种固定的颜色。

(1)首先我们学习Smooth coloring(平滑着色)。先为三角形的每个顶点设置一个颜色,这个颜色合我们前面所说的清屏颜色一样,如下代码便为三角形定义了颜色数组:

在onDrawFrame方法中我们需要使用如下代码开启颜色渲染功能:

Gl.glEnableClientState(GL10.GL_COLOR_ARRAY);

Android中提供了glColorPointer方法来设置颜色,下面为三角形设置定义好的颜色:

Gl.glColorPointer(4,GL10.GL_FIXED,0,colorBuffer);

第一个参数即设置颜色时要使用到的四个属性(R,G,B,A),所以为4;由于本例中的数据时固定的,所以第二个参数使用了GL_FIXED表示固定的;stride描述了步长,我们选取默认值为0;第四个参数是颜色缓存,即我们创建的颜色数组。

最后,需要注意的是,使用完颜色之后不要忘记关闭,在OpenGL中使用glEnableClientState之后都需要用glDisableClientState来关闭或取消对应的功能,代码如下:gl.glDisableClientState(GL10.GL_COLOR_ARRAY);

(2)学会了平滑着色之后,单调着色就简单了,单调着色实际上是设置当前所使用的颜色,即设置当前颜色之后绘制的所有内容都使用当前颜色。设置当前颜色代码如下:

//颜色(r,g,b,a)

Gl.glColor4f(0.5f,0.5f,1.0f,1.0f);

2、  图形的旋转

        学习完如何着色之后,我们就会想怎么将这些彩色对象绕着坐标轴旋转?下面我们将三角形沿Y轴旋转,四边形沿X轴旋转为例,为大家讲解下实现过程。

       要实现旋转很简单,首先增加两个变量来控制这两个对象的旋转。它们是浮点类型的变量,使得我们能够非常精确的旋转对象。浮点数包含小数位置,这意味着无需使用1、2、3.。。的角度。浮点数是OpenGL编程的基础。新变量中的rotateTri用来旋转三角形,rotateQuad用来旋转四边形,代码如下:

Float  rotateTri;//用于三角形的角度

Float  rotateQuad;//用于四边形的角度

      下面我们将下旋转函数。在Android中用glRotatef(float angle,float X,float Y,float Z)方法将某个物体沿指定的轴旋转,其中参数angle通常是一个变量,代表对象转过的角度。X、Y和Z三个参数则共同决定旋转轴的方向。比如(1,0,0)所描述的矢量经过X坐标轴的1个单位处并且方向向右。详细代码如下所示:

//旋转三角形

Gl.glRotatef(rotateTri,0.0f,1.0f,0.0f);

//旋转四边形

Gl.glRotatef(rotateQuad,1.0f,0.0f,0.0f);

到这里我们已经完成了对物体的旋转,为了让物体能够不停的旋转,在onDrawFrame方法中不断改变角度的变量,如下代码:

//改变旋转角度

rotateTri+=0.5f;

rotateQuad-=0.5f;

到此整个项目已基本实现。具体代码如下所示:

原创粉丝点击