我一直在想这个问题一段时间。如何找到图形管道的瓶颈。最近我一直在使用一个程序在一个简单的场景中使用 alpha 混合(又名草场景)绘制大量多边形。我使用了两个程序,一个使用静态坐标,另一个使用旋转和平移。两者都以 60 FPS 的速度运行,没有其他繁重的进程在运行。但是当我一起使用它们时(两个窗口每个都有相同数量的草和草位置),使用平移和旋转的一个以 10 FPS 运行,而另一个大约 55 FPS。我的问题是为什么两者都以 60 FPS 运行,当这种情况发生时,为什么第二个(每棵草的旋转和平移)下降约 50 FPS 但第二个仍然是 55?对我来说听起来像是一个瓶颈。如果您有任何想法,请告诉我,
问问题
298 次
1 回答
5
您的问题实际上不是 GPU 上的瓶颈,也不是您的程序,而是驱动程序中的瓶颈。glRotate 和 glTranslate 导致大量上下文切换到驱动程序模式,这会消耗性能。你几乎没有把所有的时间都浪费在记账上,而不是提高生产力。
引入了实例化来缓解您遇到的这个特殊问题。
要回答如何配置图形管道,有许多工具可以帮助您:
gDEBugger http://www.gremedy.com/
NVPerfkit http://developer.nvidia.com/nvidia-perfkit
GPU 性能工作室http://developer.amd.com/tools/PerfStudio/Pages/default.aspx
它还有助于在您的程序中收集一些统计信息,主要是关于昂贵调用的顺序和数量(主要是切换着色器、纹理)。
于 2011-05-26T09:14:47.767 回答