每次更新都有新的观点+变换矩阵?

时间:2012-03-01 19:56:19

标签: objective-c xcode opengl-es

我在Xcode中查看OpenGL ES 2.0的模板,我注意到Apple在每一帧之前创建了一个新的Perspective Matrix和一个新的Transform Matrix。我也在教程中看到了这一点。当我在其他平台上使用OpenGL时,我只需要创建一次Matrices。为什么Apple要求你每帧都制作一个新的?

1 个答案:

答案 0 :(得分:0)

在复杂的应用程序中,有几种方法可以处理OpenGL状态:

1)制定一项政策,其中改变OpenGL状态的每个功能或方法都必须将其设置回原来之前的状态

2)每个函数或方法都将状态设置为他们希望它不假设现有状态

3)你跟踪状态和功能,方法可以在本地检查并只设置他们需要的东西

在案例1中,如果有人忘记遵守该政策,则会发生错误并且难以追踪。此外,对于某些状态位,获取当前状态可能会很昂贵。

在案例2中,您花时间设置您可能不需要的状态。但这通常不算太糟糕。

在案例3中,您花费了大量精力和内存跟踪OpenGL已经保留的状态。它价格昂贵且容易出错。

通常,我选择#2。这对我来说是最少量的工作,并且在大多数情况下具有相当好的性能。您的里程可能会有所不同。