그래서 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에 대한 책을 가지고 있기 때문에 나는 아닙니다.
어쨌든, 여기에 몇 가지 도움을 주시면 감사하겠습니다 ...
는 [gamedev]에서이 일을 통해 물어 더 좋을 수 있음 (http://gamedev.stackexchange.com/) – musefan
아마도,하지만 난 존재를 인식하지 않았다 당신이 링크를 게시 할 때까지 gamedev 섹션의. – Hoeloe