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
制服的替代方案吗?或者,也许我使用错误的驱动程序配置?
谢谢你的回答。不过,我需要这个与OSX系统的#version 120兼容。你有什么建议吗? – manatttta
@manatttta:正如我所说:“这需要GLSL 1.30或更高版本,**或EXT_gpu_shader4 **。”问题在于你需要*错误的扩展名* –
在OSX上,使用版本120和EXT_gpu_shader4会产生'未声明标识符纹理'的无效调用,但'texture2D'使用'usampler2D'参数 – manatttta