: .
西蒙 ipho ” 。 是的,这是对
的,但是,当我们去渲染这个三角形之前, OpenGL 的将只是把对象放在( , ,
) 的位置上。 因此,我们将它放到屏幕内才可见 。 当我们进入转换(移动,旋转等)
,您会看到,您将不必设置对象 Z 值为负,也可以使之可见。在此之前,让目标的 Z 坐标
在-。绘制函数:
所以我们这样做是为了说明目前的三角形。我们现在需要告诉 OpenGL,数据保存在哪里,
以及如何去绘制它。这个过程只需要很少的几行代码 。回到 drawView 函数,并且实行以下
的代码:
- (void)drawView {
const GLfloat triangleVertices[] = {
, , -, // Triangle top centre
-, -, -, // bottom left
, -, - // bottom right
};
[EAGLContext setCurrentContext:context];
glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer);
glViewport(0, 0, backingWidth, backingHeight);
// -- BEGIN NEW CODE
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glVertexPointer(3, GL_FLOAT, 0, triangleVertices);
glEnableClientState(GL_VERTEX_ARRAY);
glDrawArrays(GL_TRIANGLES, 0, 3);
// -- END NEW CODE
glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
[context presentRenderbuffer:GL_RENDERBUFFER_OES];
[self checkGLError:NO];}
如你所见,这4行代码就是我们渲染一个三角形的。让我们从上往下一行行的打断这些代码
来分析,你会发现它们是非常的简单。
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
这行代码只是简单的清除了屏幕 。这个控制位告诉 OpenGL,我们使用上次教程里面 setupV
iew 函数中设置的颜色(黑色)来清除屏幕,并且清除了深度缓冲。 请注意,如果我们没
有创建深度缓冲和开启深度缓冲(如我们应该做的) ,这个屏幕将不会渲染。如果我们不使
用深度缓冲,我们将不需要通过 glClear()里的 GL_DEPTH_BUFFER_BIT.
因此,我们无论是清除以前绘制的这个缓冲区(请记住,这是双重缓冲动画 ;利用一个缓冲
区而另一个缓冲区显示) 。
glVertexPointer(3, GL_FLOAT, 0, triangleVertices);
此 函数告诉 OpenGL 的情况下我们的数据是什么格式 ,它是有4个参数,这个功能是很简单
细分:
-这个值表示了每个坐标有几个数字。我们现在是 3,是因为是3d 坐
西蒙iphone-OpenGL ES 教程 来自淘豆网m.daumloan.com转载请标明出处.