在OpenGL中绘制法线的正确方法?

时间:2012-06-28 16:35:45

标签: objective-c opengl normals

现在我正在OpenGl中编写一个程序。我正在从文件渲染一些复杂的3D图形。在对代码进行三重检查之后,我知道正在读取所有值。唯一表现奇怪的是法线。我是这样画的:

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


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

正在从GLFloats中读取值。告诉我正确的方式,或者至少我做错了。

1 个答案:

答案 0 :(得分:7)

当你调用glVertex时,它会完成一个顶点,所以你需要在此之前设置所有其他顶点状态。您需要在完成顶点之前设置顶点的法线。

它应该是这样的:

glNormal3fv(norm1);
glVertex3fv(vert1);

glNormal3fv(norm2);
glVertex3fv(vert2);

glNormal3fv(norm3);
glVertex3fv(vert3);