我做了一个粒子发射器。我不需要在我的转换中管理父/子层次。
最快的是什么?
glPushMatrix()
..apply tranformations
...draw object
glPopMatrix()
或
glLoadIdentity()
..apply tranformations
...draw object
每个我的特征?
我在我的程序中尝试了两种技术,但我没有看到FPS有任何差异。少数变化可以来自我的PC上的其他程序,例如防病毒。 (我猜)
答案 0 :(得分:5)
都不是。如果你渲染一个粒子数量可能是性能问题的粒子系统,发送每个粒子的变换(这意味着为每个粒子发出一个单独的渲染调用)将会消除任何希望性能
如果你想要一个粒子系统,你最好的办法是将粒子全部放在一个数组(preferably a buffer object)中并在一次调用中渲染它。
答案 1 :(得分:0)
我想补充说glPush/glPop
与glIdentity
glPush
保存矩阵堆栈的当前顶部,并glPop
恢复该状态。
glIdentity
清除矩阵堆栈的当前顶部。
您的设计存在以下几个问题:
对于粒子更新/渲染,最好是:
这是一个很好的链接:http://3dgep.com/?p=1057