7

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

4

5 回答 5

6

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

于 2009-05-26T06:36:23.260 回答
0

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

我觉得很好奇手册页(OpenGL ES 1.1,那里)甚至没有提到它。我发现了一个甚至声称已经不存在的iPhone 编程教程(PDF)。glNormal()

于 2009-05-26T07:00:47.800 回答
0

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

于 2009-05-26T07:17:55.457 回答
0

您不应该再使用这些功能。坚持使用 glXXXXArray()。我怀疑它们只是留在那里以使 OpenGL 到 OpenGL ES 的传输更容易。

于 2009-05-26T07:17:56.970 回答
0

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

而不是使用:

glEnableClientState( GL_NORMAL_ARRAY );
glNormalPointer( GL_FLOAT, 0, vbuf + normal_offset );

它更简单,并且需要更少的 VBO 内存来调用:

glNormal3f( 0, 0, 1 );
于 2014-01-04T16:00:12.347 回答