- 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
- 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
- 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
西蒙iphone-OpenGL_ES_教程
iphone-OpenGLES
iphone-OpenGLES
西蒙iipphhoonnee--OOppeennGGLLEESS 教程
西蒙iphone-OpenGL ES 教程-01
西蒙iphone-OpenGL ES 教程-01
西西蒙蒙iipphhoonnee--OOppeennGGLLEESS 教教程程--0011
受到花生大大的鼓励,继续努力翻译给大家看
西蒙iphone-OpenGL ES 教程
图元是构成复杂物体的基本绘图要素。在OpenGL ES 中,你可以使用的图元有点,线,三
角形。它们都有非常强的自我解释性,我觉得你需要有些例子让你看到它们。
首先,让我们来看看一些代码,然后我们可以谈论这是怎么回事,这样您就可以使用它来创
建一些自己的代码。
图元 #1 - 三角形
三角形是最“复杂”的图元,但是很容易使用,并且非常实用,这将是你可以绘制的第一个Op
enGL 的图元。当我们绘制一个三角形的时候,我们需要告诉OpenGL 在3d 空间中的三角形
的3系坐标,并且,OpenGL 将非常顺利的渲染这个三角形。
在开始之前,复制00教程中的项目代码或者从这里下载下项目代码: AppleCoder-OpenGLE
S-00.tar.gz .在XCode 中打开,开启EAGLView.m 文件,找到drawView 函数。这里就是施
展魔法的地方。
首先,我们需要定义一个三角形。要做到这点,我们需要知道在我们要处理的坐标的两种类
型:模型和世界。模型坐标是指我们正在绘制的实际图元,世界坐标告诉OpenGL 观察者在
哪里。(在世界坐标中,观察者一般在(0.0,0.0,0.0)的地方)
第一个例子将说明这点。首先,我们定义这个三角形在模型空间使用3 x 3d 坐标(x,y,z):
const GLfloat triangleVertices[] = {
0.0, 1.0, -6.0,// Triangle top centre
-1.0, -1.0, -6.0,// bottom left
1.0, -1.0, -6.0,// bottom right
};
如上所示,这里使用了3个坐标来表示一个三角形,需要注意的是,我们定义三角形顶点是
逆时针来显示的。虽然描述三角形的可以用逆时针也可以用顺时针,但是我们必须和上述一
样用逆时针来描述三角形。不过,我建议你用逆时针来描述三角形,因为我们以后可以用逆
三角形来达到一些先进的功能。
(补充:逆三角形在3d 中被认为是正面,而顺三角形则被认为是反面。在纹理渲染中被使
用到)
虽然本教程应该是纯粹的iPhone OpenGL ES 的,对于初学者来说,我会简要的描述三维坐
标系统。看看这张图片:
对于我的绘画技巧,我深表遗憾。不过这个图代表了模型空间和世界空间。 试想一下,这
是您的计算机屏幕, X 和Y 的横向和纵向的,你应该预料到, Z 表示深入。这个中心位
置就是(0.0,0.0,0.0).
所以,看我们的三角形中所描述的顶点上述情况,第一点( 0.0 , 1.0 , -6.0 )中心将
在的Y 轴,上涨1点,在屏幕的深度为6点。第二个坐标是右边的Y 轴1.0点,低于X 轴(因
此-1.0的Y 值) ,仍然回到屏幕-6.0点。这同样适用于第三个坐标。
为此,我们确定目标在我们眼睛之前(z 值是负的),所以这个目标是可见的(记得吗,观察者
或者说照相机是在(0.0,0.0,0.0)的位置上)所以说OpenGL 的深度测试是失败的并且它
没有被渲染。
我可以听到你尖叫“嘿,我还以为你说,这是模型坐标不是世界坐标! ” 。 是的,这是对
的,但是,当我们去渲染这个三角形之前, OpenGL 的将只是把对象放在( 0.0 , 0.0 ,
0.0 ) 的位置上。 因此,我们将它放到屏幕内才可见。 当我们进入转换(移动,旋转等)
,您会看到,您将不必设置对象Z 值为负,也可以使之可见。在此之前,让目标的Z 坐标
在-6.0的位置上。
绘制函数:
所以我们这样做是为了说明目前的三角形。我们现在需要告诉OpenGL,数据保存在哪里,
以及如
文档评论(0)