所以,我試圖將我的遊戲玩法渲染到XNA中的RenderTarget2D,所以我可以將着色器應用到場景中。它在某種程度上起作用,但是任何已經用255以外的alpha級別繪製的東西似乎都是紫色的。阿爾法效果工作,但也有一個紫色色調。我嘗試過四處尋找解決方案,而我似乎可以找到的唯一方法是全屏顯示爲紫色,或者將alpha替換爲紫色。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是效果文件,Sprite是處理相對於假定屏幕尺寸的繪圖的類(以應對不同的分辨率)。
我正在使用XNA 3.1。我知道我現在應該使用4.0,但我並不是因爲我有3.1的書,這在某些情況下很有幫助。
總之,這裏的一些幫助,將不勝感激......
可能有更好超過在[gamedev]問這樣一個(http://gamedev.stackexchange.com/) – musefan
可能,但我不知道是否存在的gamedev部分的內容,直到您發佈鏈接。 – Hoeloe