【问题标题】:opengl es 2.0 textures the right wayopengl es 2.0 纹理的正确方式
【发布时间】: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


    【解决方案1】:

    你的做法是正确的。 OpenGL是一个“状态机”,所以你必须为每一帧绘制的渲染管线设置状态。基本上,您的所有绘图都将在您的渲染函数中完成。

    【讨论】:

      猜你喜欢
      • 2011-05-19
      • 1970-01-01
      • 2012-04-08
      • 1970-01-01
      • 2012-04-08
      • 2012-03-29
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      相关资源
      最近更新 更多