是否可以通过使用脏矩形来优化OpenGL ES 2.0绘图?
在我的情况下,我有一个2D应用程序需要绘制背景纹理(iPad上的全屏),然后是每帧上的几个VBO的内容。问题是这些VBO可能包含数百万个顶点,需要花费几秒钟的时间将所有内容绘制到显示器上。但是,每帧只会实际更新一小部分显示器。
这种优化是否可行,以及如何实施(或者更合适的地方)?是否需要将某种裁剪平面传递到顶点着色器?
答案 0 :(得分:1)
如果您使用glViewport
设置区域,则会相应调整剪裁。然而,这发生在顶点着色器阶段之后,就在光栅化之前。由于GL无法知道您自己的顶点程序的结果,因此在应用顶点程序之前无法对任何顶点进行排序。在那之后,确实如此。它的效率如何取决于实际的GPU。
因此,您必须将对象排序并拆分为较小的(例如矩形有界)图块,并自行测试它们以获得完整的性能。