不支持的GLSL着色器

时间:2012-05-05 16:02:59

标签: java opengl glsl shader notsupportedexception

对于一个类我必须使用Java,jogl和lwjgl。 我们得到了一些代码,现在我正在尝试运行此代码,但是我得到了错误:

“不支持GLSL 3.30。支持的版本为:1.00 ES,1.10和1.20”

我无法确定支持哪些着色器,或者是驱动程序问题还是硬件缺陷。

目前我正在进行debian测试/不稳定并使用当前的xorg-video-ati驱动程序包。

有谁能告诉我如何识别支持哪些着色器(如果有的话)?

3 个答案:

答案 0 :(得分:4)

  

“不支持GLSL 3.30。支持的版本为:1.00 ES,1.10和1.20”   (......)   目前我正在进行debian测试/不稳定并使用当前的xorg-video-ati驱动程序包。

嗯,这并不是什么大惊喜,因为DRI / Mesa xorg-video-ati又称radeon驱动程序目前仅支持带有扩展的OpenGL-2.1。 OpenGL-3仍处于DRI / Mesa开发的实验阶段。

您需要安装AMD / ATI的专有fglrx / Catalyst驱动程序以获得对OpenGL-3及更高版本的支持(当然这仍取决于您的硬件)。幸运的是,fglrx的质量得到了显着改善,我最后的详尽测试(使用Radeon HD6570)显示出很好的稳定性(即使是所有的折磨测试,它们都能存活下来,比如模糊的上下文和FB设置)。我发现并报告的唯一真正的错误是glXSwapBuffers永远不会阻塞间接渲染上下文,无论如何设置V-sync和swap intervall。

答案 1 :(得分:2)

GLSL 3.30需要OpenGL 3.3。看起来您的硬件无法运行GL 3.x或者您最近没有更新过您的驱动程序。

答案 2 :(得分:0)

如果查看GLSL文件或作为着色器加载的字符串,应该有一行:

#version 330

这意味着版本3.3。您可以尝试将其更改为:

#version 120

(版本1.2)

不能保证它会起作用,但如果着色器很简单,你可能会侥幸成功。