1

私はシェーダー (XNA を使用) に慣れていないので、説明できない非常に奇妙なバグが発生しています。次のピクセル シェーダー関数を検討してください。

float4 BasicTest(float2 coords: TEXCOORD0) : COLOR0  
{
float4 src=tex2D(s0, coords);
float4 dst=tex2D(s1, coords);
float4 color=src;
if (coords.x>0.5) color=dst;
return color;
}

srcこれにより、期待どおり、画面の左側と右側にテクスチャが表示dstされます。ただし、代わりに単に使用する場合:

float4 BasicTest(float2 coords: TEXCOORD0) : COLOR0  
{
float4 src=tex2D(s0, coords);
float4 dst=tex2D(s1, coords);
float4 color=dst;
return color;
}

src画面いっぱいに乗ります!

どうやら、シェーダーdstは、何らかの式でない限り、表示をまったく拒否します (color=src*0.5+dst*0.5これも正常に動作します)。私はその問題をごまかすことができるif (coords.x>=0)と思いますが(多分)、何が原因なのかを本当に知りたいです!

私のコードについてさらに詳細が必要な場合は、教えてください。

4

1 に答える 1