注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

东东的博客

江南烟雨,同大家一起分享

 
 
 

日志

 
 

[翻译]Android 3D 游戏开发教程– Part II  

2010-06-17 10:46:26|  分类: android相关 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

这几篇Android 3D游戏开发的文章原文出自一位德国人Martin在droidnova.com写的文章,有lixinso翻译为中文。

这个系列的第二部分是关于如何添加一个三角形并可以旋转它。

第一件事情是初始化需要显示的三角形。我们来在VortexRenderer类中添加一个方法initTriangle()。

OWY[QW4_'N{]V$KQ'_]ALWL

让我们从新的对象变量开始. _vertexBuffer为我们的三角形保存坐标._indexBuffer保存索引. _nrOfVertices变量定义需要多少个顶点.对于一个三角形来说,一共需要三个顶点.
      这个方法首先为这里两个buffer分配必须的内存(14-22行). 接下来我们定义一些坐标(24-28行) 后面的注释对用途给予了说明.
      在30行,我们将coords数组填充给_vertexBuffer . 同样在31行将indices数组填充给_indexBuffer 。最后将两个buffer都设置position为0.

为了防止每次都对三角形进行初始化,我们仅仅在onDrawFrame()之前的行数调用它一次。一个比较好的选择就是在onSurfaceCreated()函数中.

P(E$[6_]9G2X]P($UPYSI%P

glEnableClientState() 设置OpenGL使用vertex数组来画。这是很重要的,因为如果不这么设置OpenGL不知道如何处理我们的数据。接下来我们就要初始化我们的三角形。

为什么我们不需使用不同的buffer? 在新的onDrawFrame()方法中我们必须添加一些新的OpenGL调用。

()OKN59LP]6%R)X0BYI64ON

好,一步一步地看。
glClearColor()glClear() 在教程I部分已经提到过。在第10行使用glColor4f(red, green, blue, alpha)设置三角形为暗红色 .
在 第13行,我们使用glVertexPointer()初始化Vertex Pointer. 第一个参数是大小,也是顶点的维数。我们使用的是x,y,z三维坐标。第二个参数,GL_FLOAT定义buffer中使用的数据类型。第三个变量是0, 是因为我们的坐标是在数组中紧凑的排列的,没有使用offset。最后哦胡第四个参数顶点缓冲。
最后,glDrawElements()将所有这些元素画出来。第一个参数定义了什么样的图元将被画出来。第二个参数定义有多少个元素,第三个是indices使用的数据类型。最后一个是绘制顶点使用的索引缓冲。

当最后测试这个应用的使用,你会看到一个在屏幕中间静止的三角形。当你点击屏幕的时候,屏幕的背景颜色还是会改变。

现在往里面添加对三角形的旋转。下面的代码是写在VortexRenderer类中的.

'}@X94H0)6I~OWRAA7@2{G0

glRotatef()方法在glColor4f()之前被onDrawFrame()调用.

BN90P2[(2J3RS]N6HBGOGBU

这时候我们可以绕y轴旋转。如果需要改变只需要改变glRotate()方法中的0f。这个参数中的值表示一个向量,标志三角形绕着旋转的坐标轴。

要让它可用,我们必须在VortexView中的onTouchEvent()中添加一个调用。

LB~P_ZF4{1THZ6ACO7(7DKD

上面代码中除以10是为了减小角度变换的速度。

现在编译运行这个程序。如果你在屏幕的最左边点击,你会看到三角形轻微旋转。如果你将手指移到右边,旋转的速度就会变得很快。

Eclipse工程的源代码在这里下载(原链接): Vortex Part II

3d-part-two-triangle

3d-part-two-triangle1

3d-part-two-triangle2

转自:http://blog.csdn.net/lixinso/archive/2010/01/30/5272738.aspx

  评论这张
 
阅读(525)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017