1

我需要为使用 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 形。我猜我需要向我的多边形添加顶点。有没有一种简单的方法来保持我的三角形扇形但添加顶点?

4

1 回答 1

1

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

但是,没有正确的方法来计算任何模型的法线。您必须定义对象应如何着色,然后添加更多glNormal调用以告知 OpenGL 您希望如何着色。

于 2013-04-06T18:06:58.067 回答