VAO在LWJGL中渲染不正确

时间:2015-11-30 19:19:17

标签: java opengl render lwjgl

我正在尝试使用VAO进行渲染,并且在渲染错误时遇到问题。 我确实对这个主题有一点经验但不是很多。

这是我的约束代码:

//RawModel is just a type to store vao id and number of indices.
public RawModel loadToVao(float[] positions, int[] indices){
    //create VAO and bind it
    int vaoID = GL30.glGenVertexArrays();
    GL30.glBindVertexArray(vaoID);

    //create index buffer
    int indexVBO = GL15.glGenBuffers();
    GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, indexVBO);
    IntBuffer indexBuffer = BufferUtils.createIntBuffer(indices.length);
    indexBuffer.put(indices);
    indexBuffer.flip();
    GL15.glBufferData(GL15.GL_ELEMENT_ARRAY_BUFFER, indexBuffer , GL15.GL_STATIC_DRAW);

    //create vertex buffer
    int positionVBO = GL15.glGenBuffers();
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, positionVBO);
    FloatBuffer vertBuffer = BufferUtils.createFloatBuffer(positions.length);
    vertBuffer.put(positions);
    vertBuffer.flip();
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, vertBuffer , GL15.GL_STATIC_DRAW);
    GL20.glVertexAttribPointer(0, 3, GL11.GL_FLOAT, false, 0,0);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);

    GL30.glBindVertexArray(0);
    return new RawModel(vaoID, indices.length);
}

这是我的渲染代码:

GL30.glBindVertexArray(obj.getVaoID());
GL20.glEnableVertexAttribArray(0);
GL11.glDrawArrays(GL11.GL_POINTS, 0, sphere.getRawModel().getSize());
GL11.glDrawArrays(GL11.GL_TRIANGLES, 0, sphere.getRawModel().getSize());
GL20.glDisableVertexAttribArray(0);
GL30.glBindVertexArray(0);

我渲染两个点和三角形只是为了看出出了什么问题。最终只会是三角形。

这段代码似乎总是给我一个不应该存在的对象中心点。它也有不正确的元素分组,因此三角形完全错误。

如果有人能提供帮助,那就太好了。 感谢

0 个答案:

没有答案