Sam*_*urn 1 opengl-es ios opengl-es-2.0
我已经阅读了一些 OpenGL-ES 2.0 的教程,我注意到他们为每个 60Hz 帧设置了视口 (glViewport)。
这样做是个好主意还是只是为了简化示例?
如果这样做的话,会有性能损失吗?
目前适用于 iOS,但旨在移植到其他平台。
只要相对容易做到,我就会避免任何类型的冗余调用。在 的情况下glViewport(),应该很容易仅在视口大小实际发生变化时(通常是在调整窗口大小时)调用它。
事实上,在这种情况下,它不太可能产生可衡量的差异。设置视口很可能相当便宜,因此每帧设置一次应该不会有什么坏处。无论如何,驱动程序可能会消除多余的调用。
某些状态更改的成本高度依赖于平台。您认为非常便宜的某些调用在特定平台上可能会非常昂贵。例如,某些平台将混合作为片段着色器的一部分,因此更改混合状态会导致着色器更改,其成本可能比您预期的要高得多。
关于驱动程序是否应该检查冗余状态更改存在部分哲学讨论。有些人会认为不应该这样做,因为额外的测试会对避免冗余调用的编写良好的应用程序产生一些负面的性能影响。但通常没有太多选择,因为有很多编写糟糕的应用程序/游戏用作基准,并且检测驱动程序中的冗余调用可以显着提高这些应用程序/游戏的性能。
| 归档时间: |
|
| 查看次数: |
1688 次 |
| 最近记录: |