【发布时间】:2014-03-06 13:28:10
【问题描述】:
我正在尝试为每个顶点渲染一组具有自己颜色的顶点。顶点的数量大约是 1 mio,所以我使用顶点数组对象来渲染它们。 渲染点对我来说没有问题,但是当我将颜色添加到数据数组时,点仍然呈现为白色。我尝试了找到的不同教程,但它们都不适合我(例如:tut1、tut2 或 this)。
我将数据放在一个带有 VCVCVC 的数组中... 3 个浮点数用于顶点位置,4 个浮点数用于颜色。
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
unsigned VAO_ID;
glGenVertexArrays(1, &VAO_ID);
glBindVertexArray(VAO_ID);
unsigned VBO_ID;
glGenBuffers(1, &VBO_ID);
glBindBuffer(GL_ARRAY_BUFFER, VBO_ID);
glBufferData(GL_ARRAY_BUFFER, vertex_count*7*4, vertices, GL_STATIC_DRAW);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 7*4, 0);
glEnableVertexAttribArray(0);
glVertexAttribPointer(1, 4, GL_FLOAT, GL_FALSE, 7*4, (char*)NULL + 3);
glEnableVertexAttribArray(1);
glVertexPointer(3, GL_FLOAT, 7*4, &vertices[0]);
glColorPointer(4, GL_FLOAT, 7*4, &vertices[3]);
glDrawArrays(GL_POINTS, 0, vertex_count);
我是 OpenGL 的新手,所以我可能犯了一个我看不到的愚蠢错误。
顺便说一句:即使使用数组中的颜色,顶点位置仍然正确
【问题讨论】:
-
这个偏移量好像是错误的:
(char*)NULL + 3);应该是字节-3*4 -
我更改了偏移量,但这并没有改变任何东西。笑话是顶点的渲染是正确的,但它们都是白色的(我检查了颜色,它们在绿色/蓝色附近)。所以我想我定义了类似的颜色错误的位置。
-
你用什么值来表示颜色,0..1?如何在片段着色器中应用颜色?
-
我使用 0.0 到 1.0 范围内的值。而且我没有片段着色器,但我目前正在研究它。
-
如果你没有片段着色器,那么着色器应该如何知道点应该是哪种颜色? ;)
标签: opengl vertex-array-object