【问题标题】:How to test shaders again different version of shaders model如何再次测试不同版本的着色器模型的着色器
【发布时间】:2011-07-25 17:52:01
【问题描述】:

我有很多 OpenGL 着色器。我们尝试使用尽可能多的不同硬件来评估我们产品的便携性。我们的一位客户最近遇到了一些渲染问题,似乎目标机器只提供版本 shaders model 2.0 我们所有的开发/构建/测试机器(即使是最旧的机器也运行版本 4.0),其他一切(OpenGl 版本,GSLS 版本......)似乎相同。

我没有找到降级着色器模型版本的方法,因为它是由显卡驱动程序自动提供的。

有没有办法手动安装或选择用于开发/测试目的的 OpenGL/GLSL/Shader 模型版本?

注意:主要目标是用于 ATI/NVIDIA 卡的 windows XP SP2/7 (32&64)

【问题讨论】:

    标签: opengl glsl shader


    【解决方案1】:

    OpenGL 没有“着色器模型”的概念;那是 Direct3D 的事情。它只有 GLSL 版本:1.10、1.20 等。

    每个 OpenGL 版本都匹配特定的 GLSL 版本。 GL 2.1 支持 GLSL 1.20。 GL 3.0 支持 GLSL 1.30。对于 GL 3.3 及更高版本,他们不再胡闹,只是使用相同的版本号,因此 GL 3.3 支持 GLSL 3.30。所以 GLSL 1.50(映射到 GL 3.2)和 GLSL 3.30 之间存在一个奇怪的版本号差距。

    从技术上讲,允许 OpenGL 实现拒绝编译旧的着色器版本,而不是与当前版本匹配的着色器版本。然而,作为一个实际问题,您几乎可以将任何 GLSL 着色器推入任何 OpenGL 实现,只要着色器的版本小于或等于 OpenGL 实现支持的版本。这尚未在 MacOSX Lion 的 GL 3.2 内核实现上进行测试。

    有一个例外:core contexts。如果您尝试通过使用从核心移除的功能的核心 OpenGL 上下文提供着色器,它会报错。

    没有办法强制 OpenGL 为您提供特定的 OpenGL 版本。您可以使用 wgl/glXCreateContextAttribs 要求它。但这可以为您提供比您要求的版本更高的任何版本,只要该版本与您要求的版本向后兼容。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多