Introduction_to_3D_Game_Programming_with_Directx_11 から dx11 を学んでいます。msaa がなくても大丈夫です。有効にすると、.fx および C++ コードがうまく機能しなくなります。誰かがそれを経験し、この状況に対処する方法はありますか?
コードの前:
Texture2D gTexture1;
float4 BLEND_PS(VertexOut_SV pin) :SV_TARGET
{
float4 texColor = float4(0.0f, 0.0f, 0.0f, 0.0f);
texColor = gTexture1.Sample(SamAnisotropic, pin.Tex);
return texColor;
}
msaa で作成したテクスチャを texture2D にバインドできないため、msaa を常に ON にしています。
コードの後:
Texture2DMS<float4> gTexture1;
float4 BLEND_PS(VertexOut_SV pin) :SV_TARGET
{
float4 texColor = float4(0.0f, 0.0f, 0.0f, 0.0f);
texColor = gTexture1.Load(int2(pin.Tex.x*1400, pin.Tex.y*900), 0);
return texColor;
}
しかし、texColor は私が望む正しいピクセルではありません。msaa で SRV をサンプリングするにはどうすればよいですか? msaa のない UAV を msaa のある SRV に変換する方法は?
また、対応する hlsl コードを使用して C++ ゲーム コードで msaa を有効または無効にする方法を教えてください。互いに異なる hlsl を保持する必要がありますか?