0

我有闪电的问题。闪电适用于:

//...
gluSphere(qobj, r1, precision, precision);
//...

但它不适用于:

//...
glBegin(GL_TRIANGLES);
glColor3fv(colors[4]);
glVertex3fv(vertices[triangles[fig2][1]]);
glVertex3fv(vertices[triangles[fig2][2]]);
glVertex3fv(vertices[triangles[fig2][3]]);
glEnd();
//...

这是它的外观:

img http://img72.imageshack.us/img72/2158/36156234.jpg

如您所见,只有“gluSphere”变亮了。如何在 GL_TRIANGLES 和 GL_POLYGON 上制作相同的闪电?

4

1 回答 1

1

照明引擎需要知道多边形面对的方向。OpenGL 要求您通过法线提供这些信息,而不是自己计算这些信息:

//...
glBegin(GL_TRIANGLES);
glColor3fv(colors[4]);
// put a call to glNormal3fv or glNormal3f here!
glVertex3fv(vertices[triangles[fig2][1]]);
glVertex3fv(vertices[triangles[fig2][2]]);
glVertex3fv(vertices[triangles[fig2][3]]);
glEnd();
//...
于 2013-01-23T13:14:04.333 回答