0

我同时使用 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();

建立 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出现了,但它们是白色的。在检查了我放入的颜色后,显然是RED

4

0 回答 0