Ios 使用GLKit和OpenGLES,如何绘制两个三角形,一个带纹理,另一个实体

Ios 使用GLKit和OpenGLES,如何绘制两个三角形,一个带纹理,另一个实体,ios,opengl-es,glkit,Ios,Opengl Es,Glkit,我是OpenGL ES的新手,已经开始阅读巴克的书 第2章介绍了用纯色绘制三角形,第3章继续使用纹理 作为个人学习练习,我尝试修改示例代码以绘制两个三角形;一个是纹理,另一个是实体 这似乎是一个非常基本的练习,但作为一个OpenGL ES初学者,这个练习被证明是很棘手的 到目前为止,我已经尝试了多种方法 首先,我准备用glkVertexAttributePosition绘制,然后glkVertexAttributeCoord0。然后用三角形1绘制顶点缓冲区 接下来,我尝试了几件事,包括:

我是OpenGL ES的新手,已经开始阅读巴克的书

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

作为个人学习练习,我尝试修改示例代码以绘制两个三角形;一个是纹理,另一个是实体

这似乎是一个非常基本的练习,但作为一个OpenGL ES初学者,这个练习被证明是很棘手的

到目前为止,我已经尝试了多种方法

首先,我准备用
glkVertexAttributePosition
绘制,然后
glkVertexAttributeCoord0
。然后用三角形1绘制顶点缓冲区

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

    glDisableVertexAttribArray(GLKVertexAttribTexCoord0);

在绘制颜色属性之前:

[self.vertexBuffer prepareToDrawWithAttrib:GLKVertexAttribColor
                       numberOfCoordinates:3
                              attribOffset:offsetof(SceneVertex, colours)
                              shouldEnable:YES];
您可以在屏幕截图中看到,左下角的三角形具有与顶点颜色属性混合的纹理。构成正方形的直角三角形是完全黑色的

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

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

以下是截图:


非常感谢您的任何想法。

在OpenGL中无法呈现的原因可能有很多。例如,我想知道你是否用错误的绕组设置了第二个三角形(顺时针与逆时针)

我会尝试在两个三角形之间切换颜色/纹理,看看能否在第二个三角形上获得纹理


否则,如果示例中没有更多代码,就很难说了

我的一个建议是,如果您开始使用openGLES,请避免使用库(比如Buck的实用程序类)。你一定很清楚你在做什么。不要在GLKBaseEffect上浪费时间

启动一个Xcode opengles项目。移除所有GLKBaseEffect部分并开始使用着色器,在进行简单照明时并不困难

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