0

我是 OpenGL-ES 的新手,并且已经开始阅读 Buck 的Learning OpenGL ES for iOS书籍。

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

作为个人学习练习,我正在尝试更改示例代码以绘制两个三角形;一个有质感,一个有质感。

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

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

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

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

    glDisableVertexAttribArray(GLKVertexAttribTexCoord0);

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

在绘制颜色属性之前:

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

您可以在屏幕截图中看到左下三角形的纹理与顶点颜色属性混合。构成正方形的直角三角形完全是黑色的。

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

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

这是屏幕截图:

在此处输入图像描述

任何想法都非常感谢。

4

2 回答 2

0

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

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

于 2013-01-31T14:26:38.570 回答
0

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

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

否则,如果您的示例中没有更多代码,很难说。

于 2013-01-19T19:48:01.240 回答