XNA를 사용하여 2D 스프라이트 기반 Windows 게임을 만들기 시작했습니다. 나는 아직 경험이 많지 않지만 배우고 있습니다. XNA 게임 스튜디오 3.1을 사용 중이며 아직 4.0으로 업데이트하지 않았다는 말로 시작하겠습니다.XNA에서 RenderTarget2D를 사용할 때 색이 잘못되었습니다.
내가 달성하고자하는 것은 고정 된 크기의 버퍼에 모든 스프라이트를 그릴 수있게하는 것입니다. 그러면 고정 된 크기의 버퍼가 렌더링 패스의 끝에서 실제 백 버퍼의 크기로 조정 된 다음 . 여러 해상도가 일반적으로 어떻게 지원되는지 잘 모르겠지만, 나에게는 적절한 해결책 인 것 같았습니다.
나는 RenderTarget2D 객체를 사용하여 모든 것을 채운 다음 Texture2D를 가져 와서 backbuffer에 그려 넣습니다.
내 코드는 다음과 같습니다 : I 발생할
private RenderTarget2D RenderTarget;
private DepthStencilBuffer DepthStencilBufferRenderTarget;
private DepthStencilBuffer DepthStencilBufferOriginal;
private SpriteBatch SpriteBatch;
protected override void Initialize()
{
base.Initialize();
RenderTarget = new RenderTarget2D(GraphicsDevice, 1920, 1080, 1, SurfaceFormat.Single);
DepthStencilBufferRenderTarget = new DepthStencilBuffer(GraphicsDevice,
1920, 1080, GraphicsDevice.DepthStencilBuffer.Format);
DepthStencilBufferOriginal = GraphicsDevice.DepthStencilBuffer;
SpriteBatch = new SpriteBatch(GraphicsDevice);
}
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.DepthStencilBuffer = DepthStencilBufferRenderTarget;
GraphicsDevice.SetRenderTarget(0, RenderTarget);
GraphicsDevice.Clear(Color.Black);
SpriteBatch.Begin();
//drawing all stuff here
SpriteBatch.End();
GraphicsDevice.DepthStencilBuffer = DepthStencilBufferOriginal;
GraphicsDevice.SetRenderTarget(0, null);
GraphicsDevice.Clear(Color.Black);
Texture2D output = RenderTarget.GetTexture();
SpriteBatch.Begin();
Rectangle backbuffer = new Rectangle(0, 0, m_Options.DisplayWidth, m_Options.DisplayHeight);
SpriteBatch.Draw(output, backbuffer, Color.White);
SpriteBatch.End();
base.Draw(gameTime);
}
문제는 색상이 모든 잘못이다. 다음은 두 개의 스크린 샷을 보여주는 그림입니다. 첫 번째는 어떻게 보일 것인가에 대한 스크린 샷입니다 (이전에 각 스프라이트 자체를 단순하게 스케일링하기 전에 자체 스케일링 알고리즘을 작성했습니다). 그리고 오른쪽에서는 RenderTarget2D를 사용할 때의 모습을 보여줍니다.
사람은 내가 잘못 알고 있나요?
그게 당혹 스럽네요. 렌더링 타겟의 Texture2D를 파일로 저장하고 (Texture2D에 저장하는 방법 포함), 아직 파란색인지 확인하여 대상을 게임에 그릴 때의 문제인지 여부를 확인하십시오 또는 화면에 대상을 그립니다 (즉, 저장된 이미지가 잘 보이는 경우 문제가 화면에 나타납니다). –
안녕하세요, 저는 당신이 말한 것을했는데 렌더링 타겟의 texture2D는 스크린 샷에서 잘못된 색상으로 보이는 것처럼 정확하게 보입니다. 그래서 명백하게 문제는이 렌더링 타겟에 드로잉하는 것입니다. – Jerry