【发布时间】:2015-01-17 14:29:24
【问题描述】:
我一直在为我正在做的合同运行一些测试,以改进一个非常旧的 opengl 应用程序,我惊讶地发现,在我尝试调用 glloadmatrix 和调用 glmultmatrixf 的 12 台计算机中有 10 台几乎相同的速度。
测试1:
- 初始化:什么都没有
- 对于场景:调用 glloadmatrixf
- 对于每个模型:glpushmatrix、gltranslate/glrotate/glscale、gldrawelements、glpopmatrix
测试2:
- init:预先计算每个模型的私有 mult 矩阵
- 对于场景:调用 glloadmatrixf
- 对于每个模型:glpushmatrix、glmultmatrixf、gldrawelements、glpopmatrix
测试3:
- init:预先计算每个模型的完整矩阵
- 对于场景:没有
- 对于每个模型:调用 glloadmatrixf,然后调用 gldrawelements
我很清楚 gltranslate/glrotate/glscale 从来都不是硬件加速的,它在opengl faq 中写得很清楚,但我虽然 glmultmatrixf 也不是。然而,在大多数计算机上,上面描述的具有数百个模型的测试用例 2 和 3 都提供了几乎完全相同的性能(差异可能是由于添加了 push/pop 矩阵),而测试用例 1 的速度明显慢于预期。
所以问题:我似乎无法在互联网上找到任何说明 glmultmatrix 是否通常是硬件加速的来源。有人知道吗?
ps:将这个旧应用程序升级到更新的 opengl 标准超出了本合同的范围
【问题讨论】:
-
不值得加速,因为仅将 32 个浮点数上传到 GPU 会花费太长时间
标签: opengl