2011-05-04 56 views
0

在下面的OpenGL代码中,会发生什么?OpenGL - glVertex替换绘制点?

glNormal3f(nx1, ny1, nz1) 
glVertex3f(x1,y1,z1) 
glNormal3f(nx2, ny2, nz2) //different Normal 
glVertex3f(x1,y1,z1)  //same vector 

在口头上:
我有一个点有一个正常的,如果我和其他正常的再次创建点,点改变了他的老法向量,或者忽略了最后一个电话?

这个问题来了,当我试图使用法线以更平滑的方式使用照明渲染球体 。

回答

0

它将简单地绘制在完全相同的位置。幕后的“魔术”背后并没有什么魔法,这些魔法被认为是在相同的位置,更新法线等。

+0

法线怎么样? imagen两个三角形共享一个共同的一面......如果我重新分配法线到点,三角形的脸部改变它是正常的,当涉及到照明? – 2011-05-04 22:03:05

+0

这取决于你如何定义事物。你的代码看起来像围绕着这些顶点和法线?您可以拥有“每个顶点”法线,这是连接到该顶点的面的法线的归一化平均值,以获得平滑的着色。或者只是表面法线(也许写成每个顶点的单独法线)以具有平坦的阴影三角形。在后一种情况下,您可能会得到您在代码中显示的内容。多次出现多个法线的同一个顶点。 – Bart 2011-05-04 22:06:19

+0

好的。 “每个顶点”法线的含义是什么?如何实现平滑的阴影? – 2011-05-04 22:31:11

1

glNormal3f()只是设置当前正常,这将保持这种方式,直到下一个glNormal3f()调用。

每个glVertex3f()复制当前正常,颜色和纹理坐标,并提交一个完整的顶点到GL命令队列。

+0

谢谢。我现在明白了。 – 2011-05-04 23:22:42