OpenGL VBO,VAO,立方体和颜色

时间:2013-01-17 19:49:16

标签: opengl colors cube vbo

我目前正试图了解VBO,我遇到了一些问题。

我正在使用具有位置,颜色和法线的交错数组。但是,当我去画画时,显示屏只是白色。

这是我的数组的结构:

GLfloat position[3];
GLfloat normal[3];
GLfloat color[4];

以下是代码:

初始化:

glGenBuffers(1, &arrays[0]);
glBindBuffer(GL_ARRAY_BUFFER, arrays[0]);

glBufferData(GL_ARRAY_BUFFER, 125*10*36*sizeof(GLfloat), vertices, GL_STATIC_DRAW);

glBindBuffer(GL_ARRAY_BUFFER, 0);

glGenVertexArrays(1, &vaoID[1]);
glBindVertexArray(vaoID[1]);

glBindBuffer(GL_ARRAY_BUFFER, vaoID[1]);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 40, ((void*)0));
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 40, ((void*)12));
glVertexAttribPointer(2, 4, GL_UNSIGNED_BYTE, GL_TRUE, 40, ((void*)24));
glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1);
glEnableVertexAttribArray(2);

glBindVertexArray(0);
glDisableVertexAttribArray(0);
glDisableVertexAttribArray(1);
glDisableVertexAttribArray(2);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);

绘图:

glPushMatrix();
glBindVertexArray(vaoID[1]);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 125*36);
glPopMatrix();

我正在制作一个5x5的立方体立方体,其颜色从黑色到白色。但是,在抽奖中,这就是我所得到的:

White Cube.

1 个答案:

答案 0 :(得分:2)

我发现您上面发布的内容存在问题。您已经将颜色定义为结构中的浮点数,但是您告诉glVertexAttribPointer()您的颜色是无符号字节。应该是这样的:

glVertexAttribPointer(2, 4, GL_FLOAT, GL_TRUE, 40, ((void*)24));

并且假设您实际上将浮动放入这些内存位置。你是如何设置它们的?