使用纹理坐标时glDrawArrays崩溃

时间:2014-08-10 01:34:18

标签: opengl exc-bad-access vbo

所以我实现了一个非常快速的VBO,只是为了看看它是否值得从显示列表切换。当我尝试放入纹理坐标时,我遇到了一些麻烦。它使用glDrawArrays与EXC_BAD_ACCESS崩溃。我很确定它是我渲染VBO的方式,特别是按照我这样做的顺序,但我已经尝试过几乎所有东西并且无法让它正常工作。这是我的代码:

//create a vertex buffer object for the particles to use
    glGenBuffers(1, &VBO);
    glBindBuffer(GL_ARRAY_BUFFER, VBO);

    //create the data, this is really sloppy
    float QuadVertextData[] = {0,0,0,1,0,0,1,1,0,0,1,0};
    float QuadTextureData[] = {0,1,1,1,1,0,0,0};

    glBufferData(GL_ARRAY_BUFFER, sizeof(float)*4*3, &QuadVertextData, GL_STATIC_DRAW);

    glBindBuffer(GL_ARRAY_BUFFER, 0);

    //generate another buffer for the texcoords
    glGenBuffers(1, &VBOT);
    glBindBuffer(GL_ARRAY_BUFFER, VBOT);
    glBufferData(GL_ARRAY_BUFFER, sizeof(float)*4*2, &QuadTextureData, GL_STATIC_DRAW);
    glBindBuffer(GL_ARRAY_BUFFER, 0);

渲染代码:

    glEnableClientState(GL_VERTEX_ARRAY);
    glEnableClientState(GL_TEXTURE_COORD_ARRAY);

    glBindBuffer(GL_ARRAY_BUFFER, VBO);
    glVertexPointer(3, GL_FLOAT, 0, 0);

    glBindBuffer(GL_ARRAY_BUFFER, VBOT);
    glTexCoordPointer(2, GL_FLOAT, 0, 0);

    glDrawArrays(GL_QUADS, 0, 4);

    glDisableClientState(GL_VERTEX_ARRAY);
    glDisableClientState(GL_TEXTURE_COORD_ARRAY);

从我在互联网上看到的情况来看,我没有做错任何事。

0 个答案:

没有答案