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;
到此整个项目已基本实现。具体代码如下所示:
- Android3D游戏开发系列(2)色彩渲染和旋转
- Android3D游戏开发系列(1)初识OpenGL
- android3d游戏
- Android3D游戏开发之彩色六边形
- 游戏引擎开发系列——消息循环篇(渲染、IO、网络和音效等)
- android3D 正方体,触摸旋转
- Android3D游戏开发之为三角形添加纹理
- 《Android3D游戏开发技术详解与典型案例》笔记1
- 色彩系列教程(2):色系和色调
- win32开发(文件、字体和色彩)
- 光照与渲染(五)- 色彩空间
- 学习《Android3D游戏开发技术宝典:OpenGL.ES.2.0》一:初识OpenGL ES 2.0应用程序
- 学习《Android3D游戏开发技术宝典:OpenGL.ES.2.0》二:着色器语言基础
- 2D游戏引擎Allegro 系列教程(四) 文字渲染及显示汉字的方法
- android3D开发的小小感悟
- 火云开发课堂 - 《使用Cocos2d-x 开发3D游戏》系列 第九节:卡通渲染
- 多平台游戏渲染开发
- 多平台游戏渲染开发
- 令人无法淡定的Qt书----关于数据库模块
- 黑马程序员-生成随机数字
- matlab已知函数表达式和数据,求表达式中的系数
- Android开发之Shap自定义图形
- Delphi中强制IdHTTP使用HTTP1.1(转)
- Android3D游戏开发系列(2)色彩渲染和旋转
- 2011.7.11-7.15 周总结
- Android3D游戏开发系列(1)初识OpenGL
- 03-01 创建和编辑AutoCAD实体(一) 打开和关闭对象
- 推荐个找代码示例的VS 插件 All-In-One Code Framework Sample Browser
- Language of FatMouse
- HTML代码过滤技术
- 转 UITableView 基本使用方法总结
- 显示原理理解 DEVMODE理解