Ami*_*deh 1 c opengl 3d optimization graphic
我一直想知道这个问题.如何找到图形管道的瓶颈.最近我一直在使用一个程序在一个简单的场景中使用alpha混合(AKA草场景)绘制大量的多边形.我使用了两个程序,一个使用静态坐标,另一个使用旋转和平移.两者均以60 FPS运行,没有其他重型进程在运行.但是当我一起使用它们时(两个窗口各有相同数量的草和草位置),使用平移和旋转的那个以10 FPS运行但另一个约为55 FPS.我的问题是为什么两个都运行@ 60 FPS并且当这样的事情发生时为什么第二个(每个草的旋转和平移)下降大约50 FPS但第二个仍然是55?对我来说听起来像瓶颈.如果您有任何想法,或者如果您有关于发现GPU(或GPGPU)瓶颈的想法或论文,或优化用于在GPU上运行的图形代码,请通知我们.
你的问题实际上不是GPU上的瓶颈,也不是你的程序,而是驱动程序中的瓶颈.glRotate和glTranslate导致许多上下文切换到驱动器模式,从而消耗性能.你一直在浪费在簿记上,而不是工作效率.
引入了实例化来缓解您遇到的这个特殊问题.
要回答如何分析图形管道,有许多工具可以帮助您:
gDEBugger http://www.gremedy.com/
NVPerfkit http://developer.nvidia.com/nvidia-perfkit
GPU Perf Studio http://developer.amd.com/tools/PerfStudio/Pages/default.aspx
此外,它还有助于在您的程序中收集一些统计信息,主要是关于昂贵调用的顺序和数量(切换着色器,主要是纹理).