私はIntel HD Graphics 530(Skylake GT2)GPUを持っています。 Ubuntu 16.04 LTSにMESA 13.1ドライバをインストールしました。サポートされていないサンプラー
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(usampler)
であり、明らかにサポートされているオーバーロードは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を使って '宣言されていない識別子 'texture'の呼び出しが無効になりますが、' texture2D'は 'usampler2D'引数 – manatttta