2012-06-28 39 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