我正在尝试在 LWJGL 中编写一些简单的测试程序。我已经构建了一个 ByteBuffer 对象,其中充满了代表二维点网格的浮点值。
当我使用 glBegin/glEnd 渲染网格时,我看到了正确的输出:
float[] values = new float[MESH_SIZE * MESH_SIZE * 4];
heightField.position(0);
heightField.asFloatBuffer().get(values);
glBegin(GL_POINTS);
for (int i = 0; i < MESH_SIZE * MESH_SIZE; ++i) {
int offset = i * 4;
glVertex3f(values[offset], values[offset + 1], values[offset + 2]);
}
glEnd();
当我使用 glVertexPointer 渲染它时,除了屏幕中心的单个点之外,它无法生成任何东西。
heightField.position(0);
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 4 * 4, heightField);
glDrawArrays(GL_POINTS, 0, MESH_SIZE * MESH_SIZE);
glDisableClientState(GL_VERTEX_ARRAY);
我对 OpenGL 和 lwjgl 文档的阅读是,这两段代码应该产生相同的输出,但它们显然不会。我错过了什么?