我在Xcode中查看OpenGL ES 2.0的模板,我注意到Apple在每一帧之前创建了一个新的Perspective Matrix和一个新的Transform Matrix。我也在教程中看到了这一点。当我在其他平台上使用OpenGL时,我只需要创建一次Matrices。为什么Apple要求你每帧都制作一个新的?
答案 0 :(得分:0)
在复杂的应用程序中,有几种方法可以处理OpenGL状态:
1)制定一项政策,其中改变OpenGL状态的每个功能或方法都必须将其设置回原来之前的状态
2)每个函数或方法都将状态设置为他们希望它不假设现有状态
3)你跟踪状态和功能,方法可以在本地检查并只设置他们需要的东西
在案例1中,如果有人忘记遵守该政策,则会发生错误并且难以追踪。此外,对于某些状态位,获取当前状态可能会很昂贵。
在案例2中,您花时间设置您可能不需要的状态。但这通常不算太糟糕。
在案例3中,您花费了大量精力和内存跟踪OpenGL已经保留的状态。它价格昂贵且容易出错。
通常,我选择#2。这对我来说是最少量的工作,并且在大多数情况下具有相当好的性能。您的里程可能会有所不同。