Java OpenGL-顶点数组对象和映射顶点缓冲区对象

Java OpenGL-顶点数组对象和映射顶点缓冲区对象,java,opengl,mapping,lwjgl,vbo,Java,Opengl,Mapping,Lwjgl,Vbo,我正在使用VAOs和映射VBOs,以获得尽可能多的性能。现在,我的VBO以这种形式交错,所以有3个浮点数的顶点,然后是4个浮点数的颜色 我的问题是,即使我有正确的步幅和偏移量,它也无法识别颜色。当我实现VAOs时,这个问题就开始出现了 代码的导入部分: 映射VBO并创建VAO 绑定所有内容: 取消映射: 解除绑定: 这是在构建和映射VBO和VAO。 渲染: glBindVertexArray(vaoHandel); glDrawArrays(GL_QUADS, 0, capacity);

我正在使用VAOs和映射VBOs,以获得尽可能多的性能。现在,我的VBO以这种形式交错,所以有3个浮点数的顶点,然后是4个浮点数的颜色

我的问题是,即使我有正确的步幅和偏移量,它也无法识别颜色。当我实现VAOs时,这个问题就开始出现了

代码的导入部分: 映射VBO并创建VAO

绑定所有内容:

取消映射:

解除绑定:

这是在构建和映射VBO和VAO。 渲染:

glBindVertexArray(vaoHandel);

glDrawArrays(GL_QUADS, 0,  capacity);                   

glDisableVertexAttribArray(0);
glDisableVertexAttribArray(1);

glBindVertexArray(0);

所以再次回顾一下我的问题是,颜色不起作用,它们不会出现。我正在绘制的四边形显示出来,但它们是白色的。检查完后,我输入的颜色明显是红色

vboData.flip()?还有,你用这些颜色做什么?颜色只是“颜色”,因为着色器使用它们作为颜色。您的着色器是否使用它们作为颜色?还有,这个神秘的
构建
函数是做什么的?
7@NicolBolas信不信由你,但对一些人来说,看看最后一个答案:可能是这样,或者这个人只是幸运,他的驱动程序版本能够正确地渲染他的几何图形,即使很多事情都会造成未定义的行为。另外,为什么不开始使用着色器呢?:)
ByteBuffer dataBuffer = glMapBuffer(GL_ARRAY_BUFFER, GL_WRITE_ONLY, NumberofIndecies << 2, null);
FloatBuffer vboData = dataBuffer.order(ByteOrder.nativeOrder()).asFloatBuffer();
build(vboData);
vboData.flip();
glUnmapBuffer(GL_ARRAY_BUFFER);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindVertexArray(0);
glBindVertexArray(vaoHandel);

glDrawArrays(GL_QUADS, 0,  capacity);                   

glDisableVertexAttribArray(0);
glDisableVertexAttribArray(1);

glBindVertexArray(0);