当我读到这个(来自OpenGL wiki)时,我很震惊:
glTranslate、glRotate、glScale
这些硬件加速了吗?
不,没有已知的 GPU 可以执行此操作。驱动程序在 CPU 上计算矩阵并将其上传到 GPU。
所有其他矩阵运算也在 CPU 上完成:glPushMatrix、glPopMatrix、glLoadIdentity、glFrustum、glOrtho。
这就是为什么这些函数在 GL 3.0 中被认为已弃用的原因。您应该拥有自己的数学库,构建自己的矩阵,将矩阵上传到着色器。
很长一段时间以来,我认为大多数 OpenGL 函数都使用 GPU 进行计算。我不确定这是否是一个普遍的误解,但经过一段时间的思考,这是有道理的。由于状态切换太多,旧的 OpenGL 函数(2.x 和更早版本)确实不适合实际应用程序。
这让我意识到,可能许多 OpenGL 函数根本不使用 GPU。
所以,问题是:
哪些 OpenGL 函数调用不使用 GPU?
我相信知道上述问题的答案将帮助我成为一个更好的 OpenGL 程序员。请分享您的一些见解。
编辑:
我知道这个问题很容易导致优化级别。这很好,但这不是这个问题的意图。
如果有人知道不使用 GPU 的某个流行实现(如 AshleysBrain 建议的、nVidia/ATI 和可能依赖于操作系统的)上的一组 GL 函数,那就是我所追求的!
合理的优化指南稍后会出现。让我们关注这个主题的功能。
编辑2: