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