2013-01-23 28 views
0

我有閃電問題。閃電適用於:Glut Lightning無法在GL_TRIANGLES上工作

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

但它dosnt工作:

//... 
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上做同樣的閃電?

+3

我認爲您需要添加面部的法線。 OpenGL不會爲你猜它們。 – 2013-01-23 12:58:40

+0

是的!謝謝。現在我只需要以某種方式關閉這個問題... – user007

+0

我會將它作爲答案發布;) – 2013-01-23 13:09:16

回答

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(); 
//...