2016-11-23 67 views
1

我有一个英特尔高清显卡530(Skylake GT2)GPU。在Ubuntu 16.04 LTS上安装了MESA 13.1驱动程序。不支持的usampler

我写了一个着色器,使用usampler2D,因此试图使用#extension GL_EXT_gpu_shader4。显然这不支持这个GPU,但是#extension GL_EXT_texture_integer是。另外,支持#version 130

不过,我可以usampler2D也不texture2D(usampler2D)使用无

#version 120 
#extension GL_EXT_texture_integer 
uniform usampler2D tex; 
void main() { texture2D(tex, vec2(0., 0.)); } 

也不

#version 130 
uniform usampler2D tex; 
void main() { texture2D(tex, vec2(0., 0.)); } 

无的着色器版本的组合,成功编译不能使用。两种产量的错误都是未定义的超载,但明显支持只有texture2D(sampler)重载。

0:20(18): error: no matching function for call to `texture2D(usampler2D, vec2)'; candidates are: 
0:20(18): error: vec4 texture2D(sampler2D, vec2) 
0:20(18): error: vec4 texture2D(sampler2D, vec2, float) 

在这个架构上有使用usampler2D制服的替代方案吗?或者,也许我使用错误的驱动程序配置?

回答

2

texture2D不能与任何种类的usampler一起使用。 texture2D已从GLSL 1.30弃用,并在GLSL 1.50中删除。

correct function to use is texture。这要求GLSL 1.30或更高版本,或者EXT_gpu_shader4

+0

谢谢你的回答。不过,我需要这个与OSX系统的#version 120兼容。你有什么建议吗? – manatttta

+0

@manatttta:正如我所说:“这需要GLSL 1.30或更高版本,**或EXT_gpu_shader4 **。”问题在于你需要*错误的扩展名* –

+0

在OSX上,使用版本120和EXT_gpu_shader4会产生'未声明标识符纹理'的无效调用,但'texture2D'使用'usampler2D'参数 – manatttta