【发布时间】:2012-01-04 16:00:09
【问题描述】:
我是 ios 上的 opengl es 2.0 的新手,我正在尝试创建几个对象(由顶点制成)并为每个对象分配不同的纹理,我发现我可以通过绑定然后在渲染函数中绘制来做到这一点,如下所示:
内部渲染():
glBindBuffer(GL_ARRAY_BUFFER, _vertexBuffer);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _indexBuffer);
glVertexAttribPointer(_positionSlot, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), 0);
glVertexAttribPointer(_colorSlot, 4, GL_FLOAT, GL_FALSE, sizeof(Vertex), (GLvoid*) (sizeof(float) * 3));
glVertexAttribPointer(_texCoordSlot, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex), (GLvoid*) (sizeof(float) * 7));
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, _Texture1);
glUniform1i(_textureUniform, 0);
glDrawElements(GL_TRIANGLES, sizeof(Indices)/sizeof(Indices[0]), GL_UNSIGNED_BYTE, 0);
我对每个纹理重复上面的代码,只将 glBindTexture 中的 _Texture1 更改为 _Texture2 等。
在这一切之前,我将纹理设置如下:
glGenTextures(1, &texName);
glBindTexture(GL_TEXTURE_2D, texName);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, spriteData);
我想知道将纹理赋予不同顶点的正确方法是什么,甚至应该在渲染函数中完成吗?
这似乎不是正确的做法。
(如果我没有完全解释自己,这里是完整的代码:http://codetidy.com/1709/)
【问题讨论】:
标签: iphone ios opengl-es-2.0