如何将顶点添加到OpenGL C ++ triangle_fan

时间:2013-04-05 16:19:28

标签: c++ opengl

我需要为使用TRIANGLE_FAN填充的OpenGL不规则多边形添加正确的光照。

glBegin(GL_TRIANGLE_FAN);

glNormal3f(0.0, 0.0, 1.0);
glVertex3f(0.0f, 0.0f,0.0f);
glVertex3f(b[0][0],b[0][1], 0);
glVertex3f(b[11][0], b[11][1], 0);
glVertex3f(b[7][0], b[7][1], 0);
glVertex3f(b[10][0], b[10][1], 0);
glVertex3f(b[6][0],b[6][1], 0);
glVertex3f(b[5][0],b[5][1], 0);
glVertex3f(b[4][0],b[4][1], 0);
glVertex3f(b[8][0],b[8][1], 0);
glVertex3f(b[3][0],b[3][1], 0);
glVertex3f(b[9][0],b[9][1], 0);
glVertex3f(b[2][0],b[2][1], 0);
glVertex3f(b[1][0],b[1][1], 0);
glVertex3f(b[0][0],b[0][1], 0);

glEnd();

我当前多边形的问题是它没有正确反射光线。它只能从它的顶点这样做,它会使光线达到X形状。我猜我需要将顶点添加到我的多边形。有没有一种简单的方法可以保留我的三角形扇形但是为它添加顶点?

1 个答案:

答案 0 :(得分:1)

要在点亮对象时获得“正确”的结果,您需要定义适当的法线。由于每个顶点只有一个法线,因此它显然没有正确遮挡。

然而,没有正确的方法来计算任何模型的法线;您必须定义 对象应该如何着色,然后添加更多glNormal次调用以通知OpenGL您希望如何对其进行着色。