2012-06-28 53 views
4

現在我正在用OpenGL寫一個程序。我正在渲染一些來自文件的複雜3D圖形。在三重檢查代碼後,我知道所有的值都被正確讀取。怪異的唯一原因就是法線。我正在像這樣繪製它們:在OpenGL中繪製法線的正確方法?

 glVertex3fv(vert1); 
    glVertex3fv(vert2); 
    glVertex3fv(vert3); 


    glNormal3fv(norm1); 
    glNormal3fv(norm2); 
    glNormal3fv(norm3); 

這些值正在從GLFloats中讀取。告訴我正確的方式,或者至少我做錯了什麼。

回答

7

當您致電glVertex時,它會完成一個頂點,因此您需要先設置所有其他頂點狀態。在完成之前,您需要爲頂點設置法線。

它應該是這樣的:

glNormal3fv(norm1); 
glVertex3fv(vert1); 

glNormal3fv(norm2); 
glVertex3fv(vert2); 

glNormal3fv(norm3); 
glVertex3fv(vert3); 
+0

感謝您的回答。還有一件事,你會有任何想法,爲什麼發生這種情況? http://stackoverflow.com/questions/11229110/normals-acting-weird-in-opengl – BlueSpud

相關問題