使用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部分并开始使用着色器,当你做简单的照明时不难。