OpenGL代码在一台计算机上运行缓慢(但不在其他计算机上)

时间:2013-12-06 05:18:18

标签: c++ opengl glsl fragment-shader

我有一个正在进行光线追踪的着色器。着色器用于将场景信息作为制服渲染场景,但事实证明这种方式太有限,所以我们切换到使用SSBO(着色器存储缓冲区对象)。代码在两台计算机上完美运行,但另一台计算机渲染速度非常慢。该计算机的视频卡是一个radeon HD 6950.正确渲染的视频卡是GTX 570和radeon HD 7970.三台计算机上的场景正确显示,但radeon HD 6950渲染速度非常慢(当我们在场景中旋转时,1 FPS)。我们认为这是一个openGL版本的问题,但似乎并非如此,因为我们更新了驱动程序并且它仍然无效。知道问题可能在哪里吗?

1 个答案:

答案 0 :(得分:3)

有几种可能性:

  1. 你可能会从特定卡上的快速路径上掉下来。例如,渲染的某些方面可能无法在低端卡上高效实现。
  2. 您可能会在6950上达到VRAM限制,但在其他2张卡上没有,OpenGL基本上是颠倒,将内容交换到主内存并返回
  3. 您可能已触发该卡上的软件渲染。您可能正在使用的某些特定OpenGL功能仅在6950的软件中实现,但在其他卡上加速了硬件加速。
  4. 你没有说你正在使用哪个操作系统,所以我不确定告诉你如何调试问题。在MacOS上,您可以使用OpenGL Profiler查看它是否回退到软件并使用OpenGL驱动程序监视器查看它是否正在分页。在iOS上,你可以使用Xcode的OpenGL分析工具。我不确定在Windows或Linux上,因为我没有使用它们的经验。