1

我应该避免在opengl的着色器中进行过多的计算吗?

例如:光照等每一帧都需要计算的东西。我应该进行计算然后将结果发送到着色器,还是应该只在着色器中进行计算?

4

1 回答 1

5

GPU 与 CPU 是一个巨大的讨论话题,正如@Nicol Bolas 指出的那样,问题是寻找一种通用解决方案,其中有多种因素会影响结果。

在考虑性能时,没有什么比分析更好的了。众所周知,人类不善于预测其应用程序的性能影响。如果在开发过程中您发现自己突然受制于 GPU,那么您可能希望将一些工作卸载到 CPU 上。另一方面,如果您受 CPU 限制,您可以选择将更多工作卸载到 GPU,即使该工作与图形无关。您很可能希望首先为 GPU 提供您所能提供的(尤其是与图形相关的)以释放 CPU 周期。

您可以在NVIDIAAMD开发人员网站上阅读更多关于分析 GPU 的信息,或者通过搜索 GPU 分析教程/博客文章,例如。

GPGPU已成为并行编程世界中讨论的主要话题,因为 GPU 的设计考虑了并行性。使用SLI等技术将多个 GPU 添加到系统中以进一步并行化处理也并不罕见。这是@Patashu 评论中支持 GPU 并行处理的原则之一。如果您有兴趣了解更多信息,可以深入了解两个更流行的基于 GPU 的并行编程平台OpenCLCUDA

在以下帖子中也对该主题进行了更多讨论:

在其他出版物中阅读GPU gems系列也是一个好主意。您可能会发现其他人通过拆分工作量而获得的结果。

于 2013-03-04T01:09:01.197 回答