将glArrayElement与LWJGL一起使用

时间:2013-04-29 03:07:40

标签: java opengl lwjgl

我正在关注找到here的OpenGL教程。我现在正在第2章,它正在讨论使用glArrayElement渲染对象的优势。目前,我的代码如下:

glEnableClientState(GL_VERTEX_ARRAY);
    glEnableClientState(GL_COLOR_ARRAY);

    double vertices[] = {100, 200, 0, 200, 100, 0, 100, 100, 0};
    double colors[] = {1, .5, .8, .3, .5, .8, .3, .5, .8};


    DoubleBuffer vertexBuffer = BufferUtils.createDoubleBuffer(9).put(vertices);
    DoubleBuffer colorBuffer = BufferUtils.createDoubleBuffer(9).put(colors);

    glVertexPointer(3, 0, vertexBuffer);
    glColorPointer(3, 0, colorBuffer);

    while(!Display.isCloseRequested()) {

        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glBegin(GL_TRIANGLES);
        glArrayElement(0);
        glArrayElement(1);
        glArrayElement(2);
        glVertex3d(300, 200, 0);
        glVertex3d(400, 100, 0);
        glVertex3d(300, 100, 0);
        glEnd();

        //Display.sync(60);
        Display.update();
    }

通过调用glVertex3d显式定义的第二个三角形可以正常显示。 Bu第一个三角形根本不渲染。我犯了一个简单的错误吗?

1 个答案:

答案 0 :(得分:1)

在搜索更多示例代码时,我遇到了一个片段,说你必须“翻转每个缓冲区”。添加

vertexBuffer.flip();
colorBuffer.flip();

while循环解决了我的问题之前!