できるだけ多くのパフォーマンスを得るために、VAO と Mapped VBO を一緒に使用しています。現在、私の VBO はこの形式 VCVCVCVCVCVCVC でインターリーブされているため、3 つの float の頂点と 4 つの float の色があります。
私の問題は、ストライドとオフセットが正しい場合でも、色を認識しないことです。この問題は、VAO を実装したときに発生し始めました。
コードのインポート部分: VBO のマッピングと VAO の作成
すべてをバインドする:
glBindVertexArray(vaoHandel);
glBindBuffer(GL_ARRAY_BUFFER, vboHandel);
glBufferData(GL_ARRAY_BUFFER, NumberOfIndecies << 2, GL_STATIC_DRAW);
glVertexAttribPointer(0, 3, GL_FLOAT, false, 7<<2, 0<<2);
glEnableVertexAttribArray(0);
glVertexAttribPointer(1, 4, GL_FLOAT, false, 7<<2, 3<<2);
glEnableVertexAttribArray(1);
マッピング部分:
ByteBuffer dataBuffer = glMapBuffer(GL_ARRAY_BUFFER, GL_WRITE_ONLY, NumberofIndecies << 2, null);
FloatBuffer vboData = dataBuffer.order(ByteOrder.nativeOrder()).asFloatBuffer();
VBO のビルド:
build(vboData);
vboData.flip();
マッピング解除:
glUnmapBuffer(GL_ARRAY_BUFFER);
バインド解除:
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindVertexArray(0);
それは、VBO と VAO の構築とマッピングでした。レンダリング:
glBindVertexArray(vaoHandel);
glDrawArrays(GL_QUADS, 0, capacity);
glDisableVertexAttribArray(0);
glDisableVertexAttribArray(1);
glBindVertexArray(0);
もう一度要約すると、私の問題は、COLORSが機能せず、表示されないことです。私が描いている QUADS が表示されますが、それらはWHITEです。私が入れている色を確認した後、明らかにREDです。