【问题标题】:Getting Shaders to Run on the GPU让着色器在 GPU 上运行
【发布时间】:2011-05-12 06:53:35
【问题描述】:

我有一个使用着色器的 OpenGL 程序(OpenGL 3.3 版,GLSL 1.5 版)。我听说着色器实际上在 CPU 上运行,除非您明确告诉它在 GPU 上运行。 (当然,我使用着色器的全部原因是通过在 GPU 而不是 CPU 中进行计算来加速渲染,所以这不是我想要的行为。)这是真的吗?如果是这样,如何让着色器在 GPU 上运行?

【问题讨论】:

    标签: opengl gpu glsl


    【解决方案1】:

    我不确定您是从哪里听说的,但假设您从图形供应商那里获得了中规中矩的驱动程序,您的着色器将在 GPU 上运行,而您除了加载和使用它们之外什么都不做。

    【讨论】:

    • +1 请注意,即使是现代显卡上的某些功能也会导致 OpenGL 在软件模式下评估着色器,从而导致性能非常糟糕(GL_LINE_SMOOTH 是一个经典示例)。
    • Mac OS X 的 OpenGL 堆栈可以回退到 CPU(如果出现完全错误)。
    • OSX even support 3.3 吗?
    【解决方案2】:

    我很确定驱动程序总是试图在 GPU 而不是 CPU 上运行每个着色器。但并非所有现代视频卡都支持完整的着色器操作功能集。例如,据我所知,OpenGL 4.0 扩展 GL_ARB_gpu_shader_fp64 可以在部分支持中使用。所以驱动程序必须在 CPU 上模拟一些软件模式下的操作。关于扩展,您可以通过调用glGetString 使用GL_EXTENSIONS 参数来检查您的卡。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-11
      • 2018-11-20
      • 2022-08-05
      • 2018-12-02
      • 2017-07-08
      • 1970-01-01
      相关资源
      最近更新 更多