2011-01-29 11 views
2

GLSLでシェーダを試していますが、単純なコントラスト向上アルゴリズムを試すためにテクスチャからデータを取得しようとすると面白いエラーが発生します。GLSL 'texture2D':一致するオーバーロードされた関数が見つかりませんでした。OpenGL ES2 on iPhone

'texture2D' : no matching overloaded function found 

"final"は、作業中の色を保持するvec4変数です。ここのアイデアは、周囲のものからピクセルの色をさらに押し出すことです(実験的アイデア)。エラーのあるコードにその行をマークします。

highp vec4 tex = texture2D(tex,vec2(texcoord.x+1.0,texcoord.y)); 
highp float total = tex.r + tex.g + tex.b; 
tex = texture2D(tex,vec2(texcoord.x-1.0,texcoord.y)); <----This one as well as the next similar lines 
total += tex.r + tex.g + tex.b; 
tex = texture2D(tex,vec2(texcoord.x,texcoord.y+1.0)); 
total += tex.r + tex.g + tex.b; 
tex = texture2D(tex,vec2(texcoord.x,texcoord.y-1.0)); 
total += tex.r + tex.g + tex.b; 
highp float di = 12.0; 
highp vec4 close_av = total/di; 
final = (final - close_av)*1.3+close_av; 

なぜ機能しませんか?ありがとうございました。

答えて

6

texがシェーダーソースの先頭にuniform sampler2Dとして最初に宣言されていたとすると、元の定義を隠すスニペットの最初の行でローカル変数として再宣言されています。いずれかの変数を変更して名前を区別しておくと、コンパイルの問題が解決されます。

+1

ありがとうございます。私は次回に疲れたら質問しません。幅広い目を覚ますと、これらの間違いを見つけるのは簡単です。 :) –

関連する問題