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

4

我现在正在使用OpenGl编写程序。我从文件中渲染一些相对复杂的3D图形。在三次核对代码后,我知道所有的值都被正确读取了。唯一表现异常的是法线。我是这样绘制它们的:

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


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

这些值是从GLFloats中读取的。告诉我正确的方法,或者至少告诉我我做错了什么。

1个回答

7
当你调用glVertex时,这个顶点就完成了,所以在此之前需要设置所有其他顶点状态。在完成顶点之前,需要为其设置法线。
代码应该像这样:
glNormal3fv(norm1);
glVertex3fv(vert1);

glNormal3fv(norm2);
glVertex3fv(vert2);

glNormal3fv(norm3);
glVertex3fv(vert3);

谢谢你的回答。还有一件事,你知道为什么会发生这种情况吗?https://dev59.com/UmXWa4cB1Zd3GeqPNHnh - BlueSpud

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接