在OpenGL ES中glNormal3f的目的是什么?如果OpenGL ES中没有可用的立即模式,那么我将使用glNormal3f?示例代码很不错。
答案 0 :(得分:6)
我认为这与glColor函数的原因相同。如果整个几何体的法线对于所有顶点都相同,则可以在调用glDrawArrays / glDrawElements之前使用glNormal指定它。
答案 1 :(得分:0)
我能想到的唯一原因是它支持有效地表达许多顶点共享相同法线的表面。使用基于数组的方法,您必须创建一个对每个顶点重复相同值的数组,这会浪费内存。
我觉得奇怪的是manual page(OpenGL ES 1.1,那里)甚至没有提到它。我找到了一个iPhone programming tutorial(PDF)甚至声称glNormal()
已经不存在了。
答案 2 :(得分:0)
OpenGL ES 1.1确实提到了它,但是这是iPhone编程教程中的一个错误。
答案 3 :(得分:0)
您不应再使用这些功能了。坚持使用glXXXXArray()。我怀疑它们只是悬挂在那里使OpenGL更易于OpenGL ES传输。
答案 4 :(得分:0)
在 OpenGL | ES glNormal3f()不是不推荐使用的函数,
因为它对于在{X,Y}平面上渲染平面2D形状很有用:
而不是使用:
glEnableClientState( GL_NORMAL_ARRAY );
glNormalPointer( GL_FLOAT, 0, vbuf + normal_offset );
它更简单,它需要更少的VBO内存来调用:
glNormal3f( 0, 0, 1 );