【问题标题】:VBO with texture in LWJGLLWJGL 中带有纹理的 VBO
【发布时间】:2012-05-05 15:40:22
【问题描述】:

如何将纹理附加到 VBO?

我让它与 colorBuffer 一起工作,现在我想实现一个纹理。 这是我的绘制方法:

Color.white.bind();
glBindTexture(GL_TEXTURE_2D, texture.getTextureID());

glBindBuffer(GL_ARRAY_BUFFER, vboVertexHandle);
glBufferData(GL_ARRAY_BUFFER, vertexData, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindBuffer(GL_ARRAY_BUFFER, vboVertexHandle);
glBufferData(GL_ARRAY_BUFFER, textureData, GL_STATIC_DRAW);
glVertexPointer(vertexSize, GL_FLOAT, 0, 0L);




glEnableClientState(GL_VERTEX_ARRAY);
glTexCoordPointer(3, GL_FLOAT, 0, 0);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);

glDrawArrays(GL_QUADS, 0, amountOfVertices);
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);

那根本不显示任何东西。纹理被正确地加载,我让它在立即模式下工作。 我必须做些什么才能使其与 VBO 一起使用?

【问题讨论】:

    标签: java opengl 2d lwjgl vbo


    【解决方案1】:

    在设置 texCoordPointer 时,纹理坐标的 VBO 似乎没有绑定。更改命令的顺序应该有效。此外,您正在使用单个 VBO 中的 texCoord 数据覆盖顶点。最简单的解决方案是每个都有两个独立的 VBO。

    glBindTexture(GL_TEXTURE_2D, texture.getTextureID());
    // vertices
    glBindBuffer(GL_ARRAY_BUFFER, vboVertexHandle);
    glBufferData(GL_ARRAY_BUFFER, vertexData, GL_STATIC_DRAW);
    glVertexPointer(vertexSize, GL_FLOAT, 0, 0L);
    // texCoords
    glBindBuffer(GL_ARRAY_BUFFER, vboTexCoordHandle);
    glBufferData(GL_ARRAY_BUFFER, textureData, GL_STATIC_DRAW);
    glTexCoordPointer(3, GL_FLOAT, 0, 0);
    // unbind VBO
    glBindBuffer(GL_ARRAY_BUFFER, 0);
    
    glEnableClientState(GL_VERTEX_ARRAY);
    glEnableClientState(GL_TEXTURE_COORD_ARRAY);
    
    glDrawArrays(GL_QUADS, 0, amountOfVertices);
    
    glDisableClientState(GL_COLOR_ARRAY);
    glDisableClientState(GL_TEXTURE_COORD_ARRAY);
    

    注意:通常您不希望通过对每个 VBO 多次调用 glBufferData 来创建新的 VBO。

    【讨论】:

    • 啊,所以基本上纹理坐标只是另一个缓冲到 gfxcars 内存的顶点缓冲区?那么非常感谢你,那回合做到了!而且我现在也明白了一点。
    • 如何管理超过 1 个移动的 VBO,而无需每次都调用 BufferData?
    猜你喜欢
    • 2014-03-30
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多