Opengl es 什么';OpenGL ES中GLNORMA3F的用途是什么?

Opengl es 什么';OpenGL ES中GLNORMA3F的用途是什么?,opengl-es,Opengl Es,OpenGL ES中glNormal3f的用途是什么?如果OpenGL ES中没有可用的即时模式,我会使用glNormal3f做什么?示例代码会很好。我认为这与有glColor函数的原因相同。如果整个几何体的法线对于所有顶点都相同,则可以在调用glDrawArrays/glDrawElements之前使用glNormal指定它。我能想到的唯一原因是,它支持高效表达曲面,其中许多顶点共享同一法线。使用基于数组的方法,必须为每个顶点重复创建一个具有相同值的数组,这会浪费内存 我觉得奇怪的是,Open

OpenGL ES中glNormal3f的用途是什么?如果OpenGL ES中没有可用的即时模式,我会使用glNormal3f做什么?示例代码会很好。

我认为这与有glColor函数的原因相同。如果整个几何体的法线对于所有顶点都相同,则可以在调用glDrawArrays/glDrawElements之前使用glNormal指定它。

我能想到的唯一原因是,它支持高效表达曲面,其中许多顶点共享同一法线。使用基于数组的方法,必须为每个顶点重复创建一个具有相同值的数组,这会浪费内存


我觉得奇怪的是,OpenGLES1.1甚至没有提到它。我发现一个(PDF)甚至声称
glNormal()
已经不存在了。

OpenGL ES 1.1确实提到了它,但是的,这是iPhone编程教程中的一个错误。

你不应该再使用这些函数了。坚持使用GLXXARRAY()。我怀疑它们只是为了使OpenGL到OpenGL ES的传输更容易而遗留在那里。

在OpenGL中,ES glNormal3f()不是一个不推荐使用的函数,
因为它对于在{X,Y}平面中渲染平面2D形状非常有用:

而不是使用:

glEnableClientState( GL_NORMAL_ARRAY );
glNormalPointer( GL_FLOAT, 0, vbuf + normal_offset );
它更简单,调用时需要更少的VBO内存:

glNormal3f( 0, 0, 1 );

就是这样。。在OpenGL上,它设置默认法线。我想如果他们取消了这个功能,他们会做得更好。glMultiTexCoord的存在也是出于同样的原因。顺便说一句,“其中许多顶点共享相同的法线”,您的意思是“在给定的
glDrawArrays
调用中绘制的所有顶点共享相同的法线”?这是一个正确的理解吗?我找不到犹他大学的iTunes /播客中的“iPhone编程教程”。请更新链接。请阅读格式帮助以了解如何标记代码:-)