在opengl中着色器应该做多少工作?

Qui*_*tin 1 c c++ opengl shader glsl

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

例如:需要每帧计算的事物,例如照明.我应该进行计算然后将结果发送到着色器,还是应该在着色器中进行计算?

Mat*_*ers 5

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

在考虑性能时,没有什么比分析更好.众所周知,人类在预测其应用程序的性能影响方面表现不佳.如果在开发过程中你注意到你突然受到GPU限制,那么你可能想要将一些工作卸载到CPU.另一方面,如果您受CPU限制,您可以选择将更多工作卸载到GPU,即使该工作与图形无关.很可能你会想要通过给GPU提供尽可能多的东西(特别是如果它是图形相关的)来释放你的CPU周期.

你可以阅读更多的有关分析GPU上NVIDIAAMD开发者网站或搜索GPU剖析教程/博客文章,如.

GPGPU已成为并行编程领域的主要讨论话题,因为GPU的设计考虑了并行性.使用诸如SLI之类的技术向系统添加多个GPU 以进一步并行化处理也是常见的.这是@ Patashu评论赞成GPU并行处理的原则之一.如果您有兴趣了解更多信息,可以深入了解两个比较流行的基于GPU的并行编程平台OpenCLCUDA.

以下帖子还讨论了该主题:

阅读其他出版物中的GPU宝石系列也是一个好主意.您可能会发现其他人在分配工作量时遇到的结果.