1

1D 配列を sampler1D として、2D 配列 (基本的には行列) を sampler2D として頂点シェーダーに渡します。すべて正常に動作します - 値を確認しました。すべての値が本来あるべき場所にあります。BUT - これらのサンプラーの 2 つの値を互いに掛け合わせることができないようです。

    float pos=0.0;
    vec4 f = texture1D(xk,ki);
    vec4 H = texture2D(er,vec2(0,i));

    pos=f[0]*H[0];
    colorcheck=pos;

colorcheck をフラグメント シェーダーに渡しましたが、オブジェクトがレンダリングされず、代わりにすべてが黒になります (colorcheck=1.0 を渡すと正常に動作します)。ルックアップ後に両方のベクトルをチェックしました - どちらもすべてのフィールドで有効な値を持っています。

fx*Hx を試してみましたが、考えられるすべての組み合わせを試しました。

簡略化された頂点シェーダーの編集 (colorcheck=1.0/fx/Hx を渡すとどちらも機能しない/機能する)

    uniform sampler1D xk;
    uniform sampler2D eigenraum;
    varying float colorcheck;
    void main(){
       vec4 f = texture1D(xk,0);
       vec4 H = texture2D(eigenraum,vec2(0,0));
       colorcheck=f[0]*H[0];
       gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
   }

およびフラグメント シェーダー:

varying float colorcheck;
void main()
{
    gl_FragColor=vec4(colorcheck,1,1,1.0);
}

ご協力いただきありがとうございます!

EDIT2 - 減算/加算もできないことがわかりました..

4

1 に答える 1

1

私は解決策を見つけました-それはシェーダーコードにはありません。配列をテクスチャにバインドするときにglActiveTexture呼び出しを忘れました!

于 2012-06-16T00:37:46.807 に答える