LWJGL でいくつかの簡単なテスト プログラムを作成しようとしています。ポイントの 2D グリッドを表す浮動小数点値でいっぱいの 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 を使用してレンダリングすると、画面の中心にある 1 つの点以外は生成されません。
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 のドキュメントを読むと、これら 2 つのコードは同じ出力を生成するはずですが、明らかにそうではありません。私は何が欠けていますか?