我正在使用 OpenGL ES 1.1 开发 Android 的 2D 游戏,我想知道这个想法是好是坏还是没用。
我有一个分为 3 个部分的屏幕,所以我使用剪刀来避免对象从一个 View 重叠到另一个 View 。
我大致了解 scissor 的低级实现,并且由于我的绘图占据了很大一部分计算,我正在寻找加快速度的想法。
我目前的想法是这样的:
如果我在绘制每个对象之前用 glscissor 围绕它,我会提高应用程序的速度吗。
我的想法是,如果我放置一个 GLScissor,(center+/-sizetexture),那么 OpenGL 管道将有更少的测试要做(因为它可以丢弃 90~99% 的表面,这要归功于 glscissors。
那么对于所有 opengl 专家来说,这是好事、坏事还是没有影响?为什么?
最佳答案
它不应该有任何影响,恕我直言。我不是专家,但我的想法如下:
- Scissor 测试可节省 GPU 的填充率(硬件每秒可放入帧缓冲区的 fragment/像素数量),
- 如果您在每个对象周围放置一个
glScissor
,测试实际上不会切断任何东西 - 将渲染相同数量的像素,因此不会保存任何填充率。
如果你想优化你的渲染,一个好的开始是确保你做的是最佳的batching并减少绘制调用或复杂状态切换(纹理切换)的次数。
当然,正确的优化方法是尝试诊断渲染缓慢的原因,因此以上只是我的猜测,可能对您的特定情况有帮助,也可能没有帮助。
关于android - 我可以使用 glscissor 提高性能吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4342284/