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;

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

更多相关文章

  1. Android中如何使用rotate实现图片不停旋转的效果与动画的停止
  2. android立体图形——三棱锥
  3. Android(安卓)OpenGL ES 2.0 (七) FramebufferObject(FBO)
  4. Android中 一些维持状态的经验
  5. Android(安卓)Zxing 扫描条码实现竖屏模式(portrait mode) 摄像
  6. Android可平移缩放旋转的ImageView的实现
  7. android照相机竖屏显示的图像出现旋转的问题,但成像被拉伸了
  8. Android(安卓)三角形控件
  9. android webrtc 视频旋转

随机推荐

  1. Android键盘适配-中英文适配
  2. wp7开发第一课:软件生命周期(其一)
  3. Android 引用library project
  4. Android 动态加载(六) - 360开源框架DroidP
  5. Android(安卓)开发环境搭建之——ADT-Bun
  6. Android TextView滚动的两种方案
  7. android中自定义ViewGroup的实现
  8. Android 创建与解析XML(六)—— 比较与使用
  9. 如何将Android例子程序添加到Eclipse进行
  10. 调用android system Search UI须注意的问