JOGL - 更新顶点坐标 - glMapBuffer始终返回null

时间:2013-12-17 21:34:03

标签: java opengl jogl vbo vertex-buffer

我想在按下按键时更改顶点位置。我使用glMapBuffer来获取缓冲区,但它总是返回null。这是代码:

创建顶点缓冲区:

    FloatBuffer verticesBuffer = FloatBuffer.allocate(vertices.length * 8);
    for (int i = 0; i < vertices.length; i++) {
        verticesBuffer.put(vertices[i].position.x);
        verticesBuffer.put(vertices[i].position.y);
        verticesBuffer.put(vertices[i].position.z);

        verticesBuffer.put(vertices[i].texCoord.x);
        verticesBuffer.put(vertices[i].texCoord.y);

        verticesBuffer.put(vertices[i].normal.x);
        verticesBuffer.put(vertices[i].normal.y);
        verticesBuffer.put(vertices[i].normal.z);

    }
    verticesBuffer.flip();
    gl.glGenBuffers(1, VBOVertices, 0);
    gl.glBindBuffer(gl.GL_ARRAY_BUFFER, VBOVertices[0]);
    gl.glBufferData(gl.GL_ARRAY_BUFFER, verticesBuffer.capacity() * 4, verticesBuffer, gl.GL_DYNAMIC_DRAW);

获取缓冲区:

    gl.glBindBuffer(gl.GL_ARRAY_BUFFER, VBOVertices[0]);
    ByteBuffer verticesByteBuffer = gl.glMapBuffer(gl.GL_ARRAY_BUFFER, gl.GL_WRITE_ONLY); //this is always null
    gl.glUnmapBuffer(gl.GL_ARRAY_BUFFER);

0 个答案:

没有答案