私はゲームプレイをXNAのRenderTarget2Dにレンダリングしようとしていますので、シーンにシェーダを適用できます。ある程度機能していますが、255以外のアルファレベルで描画されたものは紫色のように見えます。アルファ効果が働いていますが、紫の色合いもあります。私は解決策を探してみましたが、唯一見えるのはフルスクリーンが紫色にレンダリングされているか、アルファが紫色に置き換えられていることです。RenderTarget2Dはすべてアルファベットを着色します
私の問題は、それらの...
のかなりのいずれかこれは私が何が起こっているかを示すために投げたシーンではありません。ご覧のように、アルファ効果は働いていますが、オブジェクトは紫色です。これは私が使用している初期化され
gameTarget = new RenderTarget2D(GraphicsDevice, (int)screenSize.X, (int)screenSize.Y, 1, SurfaceFormat.Color, RenderTargetUsage.PreserveContents);
gameDepthBuffer = new DepthStencilBuffer(GraphicsDevice, (int)screenSize.X, (int)screenSize.Y, GraphicsDevice.DepthStencilBuffer.Format);
:
ここに私は私のレンダリングコードを投稿する部分があります。
GraphicsDevice g = GraphicsDevice;
DepthStencilBuffer d = g.DepthStencilBuffer;
g.SetRenderTarget(0, gameTarget);
g.DepthStencilBuffer = gameDepthBuffer;
g.Clear(Color.Black);
GameBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Immediate, SaveStateMode.SaveState);
level.Draw(GameBatch);
GameBatch.End();
g.SetRenderTarget(0, null);
g.DepthStencilBuffer = d;
GameBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Immediate, SaveStateMode.SaveState);
if (renderEffect != null)
{
renderEffect.Begin();
renderEffect.CurrentTechnique.Passes[0].Begin();
}
Sprite.Draw(GameBatch, gameTarget.GetTexture(), new Rectangle(0, 0, (int)assumedSize.X, (int)assumedSize.Y), Color.White);
if (renderEffect != null)
{
renderEffect.CurrentTechnique.Passes[0].End();
renderEffect.End();
}
GameBatch.End();
renderEffectは、スプライトが(さまざまな解像度に対応する)と仮定画面サイズに対して描画を扱うクラスである、エフェクトファイルです。
私はXNA 3.1で作業しています。私は今は4.0を使うべきだと知っていますが、特定の状況で役立つ3.1に関する本があるので、私はそうではありません。
とにかく、ここでいくつかの助けをいただければ幸いです...
はおそらく – musefan
[gamedev](http://gamedev.stackexchange.com/)で、この1を超える依頼するより良いされている場合がありますが、私は存在を知りませんでしたあなたがリンクを投稿するまで、gamedevセクションの – Hoeloe