我正在使用VAO和Mapped VBO来获得尽可能多的性能。现在,我的VBO以VCVCVCVCVCVC格式交错,因此顶点为3个浮点数,然后是4个浮点数。
我的问题是,即使我有正确的步幅和偏移,它也无法识别颜色。当我实现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();
Bulding 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);
再次回顾一下我的问题是颜色不起作用,它们不显示。我正在绘制的 QUADS 显示但是 WHITE 。在检查了我输入的颜色后,显然 RED 。