2016-11-23 8 views
1

私は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がサポートされています。

しかし、私はusampler2Dtexture2D(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ユニフォームを使用しての代替はありますか?あるいは、間違ったドライバ設定を使用していますか?

答えて

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を使って '宣言されていない識別子 'texture'の呼び出しが無効になりますが、' texture2D'は 'usampler2D'引数 – manatttta

関連する問題