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

标签 c++ opengl glsl fragment-shader

<分区>

我有一个着色器目前正在做一些光线追踪。着色器过去常常将场景信息作为制服来渲染场景,但事实证明这太有限了,所以我们改用 SSBO(着色器存储缓冲区对象)。该代码在两台计算机上完美运行,但另一台计算机呈现它的速度非常慢。该计算机的视频卡是 radeon HD 6950。正确渲染它的视频卡是 GTX 570 和 radeon HD 7970。场景在三台计算机上正确显示,但 radeon HD 6950 渲染它非常慢(当我们围绕场景旋转时为 1 FPS)。我们认为这是一个 openGL 版本问题,但似乎并非如此,因为我们更新了驱动程序,但它仍然无法正常工作。知道问题出在哪里吗?

最佳答案

有几种可能性:

  1. 您可能会偏离那张特定卡片的快速路径。例如,渲染的某些方面可能无法在低端卡上高效实现。
  2. 您可能会在 6950 上达到 VRAM 限制,但在其他 2 block 显卡上不会,OpenGL 本质上是在颠簸,将内容交换到主内存并返回
  3. 您可能已触发该卡上的软件渲染。可能有一些您正在使用的特定 OpenGL 功能仅在 6950 的软件中实现,但在其他卡上是硬件加速的。

你没有说你正在使用哪个操作系统,所以我不确定要告诉你什么来调试问题。在 MacOS 上,您可以使用 OpenGL Profiler 查看它是否正在回退到软件,并使用 OpenGL Driver Monitor 查看它是否正在调出。在 iOS 上,您可以对这两者使用 Xcode 的 OpenGL 分析工具。我不确定是在 Windows 还是 Linux 上,因为我没有使用它们的经验。

关于c++ - OpenGL 代码在一台计算机上运行缓慢(但在其他计算机上则不然),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20416541/

相关文章:

c++ - 写一个 AI : screen capture and input

javascript - 提高 threejs/shader 几何体的 UV 线质量

c++ - 内部函数被识别为指针

c++ - 用 C/C++ 编译 DLL,然后从另一个程序调用它

c - Arch Linux 上的 OpenGL 3.3

c++ - 使用 Qt5 加载 OpenGL 扩展

c++ - 为什么我的翻译矩阵需要转置?

c++ - 为什么我的 OpenGL 纹理是透明的?

c++ - 用于在内存中存储字符串数组的数据结构

c++ - opengl颜色四边形