2024年5月9日发(作者:)

图元是构成复杂物体的基本绘图要素。在OpenGL ES中,你可以使用的图元有点,

线,三角形。它们都有非常强的自我解释性,我觉得你需要有些例子让你看到它们。

首先,让我们来看看一些代码,然后我们可以谈论这是怎么回事,这样您就可以使用

它来创建一些自己的代码。

图元 #1 - 三角形

三角形是最“复杂”的图元,但是很容易使用,并且非常实用,这将是你可以绘制的

第一个OpenGL的图元。当我们绘制一个三角形的时候,我们需要告诉OpenGL在3d空间

中的三角形的3系坐标,并且,OpenGL将非常顺利的渲染这个三角形。

在开始之前,复制00教程中的项目代码或者从这里下载下项目代码: AppleCoder-

.在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的,对于初学者来说,我会简要的描述

三维坐标系统。看看这张图片: