代码之家  ›  专栏  ›  技术社区  ›  Ryan_IRL

顶点缓冲区对象未在SDL窗口中绘制

  •  1
  • Ryan_IRL  · 技术社区  · 14 年前

    我只是在Xcode中使用OpenGLSDL模板,一切运行正常。我删除了亚特兰蒂斯代码,将主扩展名改为.mm,然后在drawgl中添加了一些测试代码。在drawgl中的这一点上绘制一个简单的三角形(使用即时模式)会给我一个白色三角形,但是当我使用顶点缓冲区对象添加要绘制的代码时,我会得到一个黑色窗口。

    这是我的vbo绘图代码:

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);     // Clear The Screen And The Depth Buffer
    glLoadIdentity();
    
    GLuint buffer;
    
    float vertices[] = {
        0.0f, 1.0f, 0.0f,
        -1.0f,-1.0f, 0.0f,
        1.0f,-1.0f, 0.0f
    };
    
    // VBO doesn't work :(
    glGenBuffers(1, &buffer);
    glBindBuffer(GL_ARRAY_BUFFER, buffer);
    glBufferData(GL_ARRAY_BUFFER, sizeof(float) * 9, vertices, GL_STATIC_DRAW);
    
    glEnableClientState(GL_VERTEX_ARRAY);
    glVertexPointer(3, GL_FLOAT, 0, vertices);
    glDrawArrays(GL_TRIANGLES, 0, 3);
    glDisableClientState(GL_VERTEX_ARRAY);
    
    1 回复  |  直到 14 年前
        1
  •  1
  •   genpfault    14 年前

    你的 glVertexPointer() 对于vbo的使用,调用看起来可疑。我想你需要一个 BUFFER_OFFSET construct 而不是 vertices 指针。