1
当试图在OpenGL中使用顶点数组(而不是立即模式渲染)绘制以下四边形时,我会看到图片中显示的图形毛刺(线段) ,可以在下面的第二个链接中找到。这条线似乎向上延伸到无穷大。OpenGL:使用顶点数组绘制立方体会导致图形故障
GLdouble vertices[] = {
// back
0.0, 0.0, 0.0,
si, 0.0, 0.0,
si, -si, 0.0,
0.0, -si, 0.0,
// front
0.0, 0.0, si,
0.0, -si, si,
si, -si, si,
si, 0.0, si,
// left
0.0, 0.0, 0.0,
0.0, -si, 0.0,
0.0, -si, si,
0.0, 0.0, si,
// right
si, 0.0, 0.0,
si, 0.0, si,
si, -si, si,
si, -si, 0.0,
// top
0.0, 0.0, 0.0,
0.0, 0.0, si,
si, 0.0, si,
si, 0.0, 0.0,
// bottom
0.0, -si, 0.0,
si, -si, 0.0,
si, -si, si,
0.0, -si, si,
};
立即附图中:
glBegin(GL_QUADS);
for (int i = 0; i < sizeof(vertices)/sizeof(*vertices)/3; i++)
glVertex3d(vertices[i * 3], vertices[i * 3 + 1], vertices[i * 3 + 2]);
glEnd();
绘制与顶点数组:
glVertexPointer(3, GL_DOUBLE, 0, vertices);
glDrawArrays(GL_QUADS, 0, sizeof(vertices)/sizeof(*vertices));
图片:
Correct cube drawn in immediate mode
Glitchy cube drawn with vertex array
我在做什么错?
他们使用它的方式,它会给他数组中的元素数量。只是不是顶点的数量,因为元素是单浮点数。修正是正确的。 – ltjax 2011-04-16 16:16:36
哦,我明白了。所以它返回的是浮点数,但不是顶点的数量。因此,因为每个顶点有3个浮点数,所以它返回72而不是24. – 2011-04-16 16:20:41
这意味着我对sizeof的理解有点偏离,sizeof(指针对双精度)/ sizeof(*指针对双精度)''返回数组元素的数量? – 2011-04-16 16:23:00