ピクセルシェーダを通過するテクスチャをレンダリングしようとしています。次のようにShader DirectX 9でテクスチャを渡す
現在、私のシェーダがある:
float4 EffectProcess(float2 Tex : TEXCOORD0) : COLOR0
{
return float4(1,0,0,1);
}
technique MyTechnique
{
pass p0
{
VertexShader = null;
PixelShader = compile ps_2_0 EffectProcess();
}
}
あなたが見ることができるように、それはそれは赤にした画素を強制的になり、非常に基本的なシェーダです。
UINT uiPasses = 0;
res= g_lpEffect->Begin(&uiPasses, 0);
for (UINT uiPass = 0; uiPass < uiPasses; uiPass++)
{
res = g_lpEffect->BeginPass(uiPass);
res = sprite->Begin(D3DXSPRITE_SORT_TEXTURE);
res = sprite->Draw(tex, NULL, 0x0, 0x0, 0xFFFFFFFF);
res = sprite->End();
res = g_lpEffect->EndPass();
}
res = g_lpEffect->End();
そして、そういうシェーダを使ってテクスチャを描いています。私はこれが正しい方法であるとは確信していませんが、その件についてはほとんどリソースが見つかりませんでした。
シェーダは正しく作成されており、テクスチャも同様にすべての呼び出しがS_OKの戻り値を返しますが、コードを実行すると、テクスチャは赤で上書きされることなく完全に表示されます。
私がやりたいことをするために自分のスプライトシェイダーを作成しました。 –