Opengl 如何再次测试着色器不同版本的着色器模型

Opengl 如何再次测试着色器不同版本的着色器模型,opengl,glsl,shader,Opengl,Glsl,Shader,我有很多OpenGl着色器。我们尝试使用尽可能多的不同硬件来评估产品的可移植性。我们的一位客户最近遇到了一些渲染问题,似乎目标机器只提供版本着色器模型2.0我们所有的开发/构建/测试机器(即使是最老的机器也运行版本4.0),其他一切(OpenGl版本、GSLS版本…)似乎都相同 我没有找到降级着色器模型版本的方法,因为它是由图形卡驱动程序自动提供的 是否有方法手动安装或选择用于开发/测试的OpenGl/GLSL/着色器模型版本 注意:ATI/NVIDIA卡的主要目标是windows XP SP2

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

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

是否有方法手动安装或选择用于开发/测试的OpenGl/GLSL/着色器模型版本


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

OpenGL没有“着色器模型”的概念;这是一个Direct3D的东西。它只有GLSL的版本:1.10、1.20等

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

从技术上讲,OpenGL实现可以拒绝编译比当前版本匹配的着色器版本更旧的着色器版本。但是,实际上,只要着色器的版本小于或等于OpenGL实现支持的版本,就可以将任何GLSL着色器推入任何OpenGL实现中。这还没有在MacOSX Lion的GL 3.2核心实现上进行测试

有一个例外:。如果您试图通过使用从核心移除的功能的核心OpenGL上下文来提供着色器,它会抱怨


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

有点棘手。。。因此,我错误地认为着色器模型应该对我的案例中的渲染问题负责!感谢您提供的所有信息。实际上,您可以请求特定版本: