JVM使用LWJGL与VBO崩溃

时间:2014-05-05 00:22:42

标签: java opengl jvm lwjgl vbo

每次我尝试运行LWJGL应用程序时,JVM都会崩溃。这似乎与向我的VBO添加多个三角形有关。

这是我的初始化代码

float[] vertices = {
    -0.5f, 0.5f, 0f,
    -0.5f, -0.5f, 0f,
    0.5f, -0.5f, 0f,

    0.5f, -0.5f, 0f,
    0.5f, 0.5f, 0f,
    -0.5f, 0.5f, 0f
};

vertexCount = vertices.length / 3;

FloatBuffer verticesBuffer = BufferUtils.createFloatBuffer(vertices.length);
verticesBuffer.put(vertices);
verticesBuffer.flip();

vboId = glGenBuffers();
glBindBuffer(GL_ARRAY_BUFFER, vboId);
glBufferData(GL_ARRAY_BUFFER, verticesBuffer, GL_STATIC_DRAW);
glVertexPointer(vertexCount, GL_FLOAT, 0, 0L);

glBindBuffer(GL_ARRAY_BUFFER, 0);

这是我的渲染代码

glEnableClientState(GL_VERTEX_ARRAY);   
glDrawArrays(GL_TRIANGLES, 0, vertexCount);
glDisableClientState(GL_VERTEX_ARRAY);

当我删除顶点数组中的最后9个值时,它可以正常工作,但如果我保留这些值,或者添加更多,JVM将崩溃。

1 个答案:

答案 0 :(得分:2)

glVertexPointer的第一个参数是每个顶点的坐标数,而不是顶点数。所以改变这一行:

glVertexPointer(3, GL_FLOAT, 0, 0L);