使用GLKit和OpenGL-ES,如何绘制两个三angular形,一个纹理,另一个坚实

我是OpenGL-ES的新手,已经开始通过Buck的学习OpenGL ES for iOS书籍工作。

第2章介绍用纯色绘制三angular形,第3章继续使用纹理。

作为个人学习练习,我试图改变示例代码来绘制两个三angular形; 一个是质地,另一个是固体。

看起来像一个非常基本的练习,但作为一个OpenGL-ES初学者 – 是一个棘手的问题。

到目前为止,我已经尝试了一些组合。

首先,我准备绘制GLKVertexAttribPosition ,然后GLKVertexAttribTexCoord0 。 然后我用三angular形1绘制我的顶点缓冲区。

接下来,我尝试了几件事情,包括:

  glDisableVertexAttribArray(GLKVertexAttribTexCoord0); 

  GLuint name = self.textureInfo0.name; glDeleteTextures(1, &name); 

然后再绘制颜色属性:

 [self.vertexBuffer prepareToDrawWithAttrib:GLKVertexAttribColor numberOfCoordinates:3 attribOffset:offsetof(SceneVertex, colours) shouldEnable:YES]; 

在屏幕截图中可以看到,左下angular的三angular形具有与顶点颜色属性混合的纹理。 正方形 – 使广场 – 是完全黑色的。

请注意, prepareToDrawWithAttrib方法调用是Buck的实用程序类,主要调用glVertexAttribPointer方法。

需要注意的是我在这里使用GLKit ,所以没有着色器或任何东西。

这是截图:

在这里输入图像说明

任何想法非常赞赏。

可能有很多原因为什么不在OpenGL中呈现。 例如,我不知道你是否设置了错误的绕组(顺时针和逆时针)你的第二个三angular形。

我会尝试切换两个三angular形之间的颜色/纹理,看看你是否可以得到第二个三angular形的纹理。

否则,在你的例子中没有更多的代码,这很难说。

我的build议之一是避免图书馆(如巴克的实用程序类),如果你开始openGLES。 你必须知道你在做什么。 不要浪费你的时间与GLKBaseEffect。

开始一个Xcode的opengles项目。 删除所有的GLKBaseEffect部分并开始使用着色器,当你做简单的照明时不难。