Draw()
메서드를 사용하지 않고 Texture2D
크기를 조절하려고합니다. 이유는 입니다. 추가 조작을 수행하기 전에는 Texture2D
을 그리지 않을 것입니다. Texture2D
을 필드로 저장하고 있습니다.Draw()없이 Texture2D 크기 조절
답변
제가 생각할 수있는 가장 먼저 생각한 것은 Texture2D.GetData
을 사용하고 Color
, uint
또는 기타 배열로 텍스처를 저장 한 다음 배율을 수행하는 것입니다.
이것은 기본적인 컴퓨터 그래픽 지식을 필요로하며, 그렇게하는 것이 더 좋은 방법이라고 생각하지 않습니다.
이미지에 어떤 이미지 조작을 수행할지 모르겠지만 이러한 조작을 수행하기 전에 크기 조정을 수행하지 않는 것이 좋습니다. 그렇게 할 수있는 방법이 있다면 이미지를 조작 한 후에 크기를 조정하십시오. Xna는 이미 당신을위한 스케일링 작업을 처리했습니다.
특정 픽셀 작업을 수행하려는 경우 Texture2D.GetData
이 적합하지만 소량으로 만 작동합니다. 이 작업을 수백 개의 이미지로 수행하면 게임 속도가 크게 저하됩니다. 사용자 정의 Effect
을 사용하여 몇 가지 사후 처리 효과를 수행하는 것이 좋습니다.
편집 : 방금 당신이 원하는 방식으로이 작업을 수행 할 수있는 방법을 생각했습니다. 당신이 할 수있는 일은 RenderTarget2D
객체에 스케일 된 텍스쳐를 그려서 색 데이터를 얻고 원하는대로 데이터를 조작하는 것입니다. 아래 예 : 이것은 렌더링 대상 질감을 그립니다
RenderTarget2D renderTarget = new RenderTarget2D(GraphicsDevice, textureWidth, textureHeight, false, GraphicsDevice.PresentationParameters.BackBufferFormat, DepthFormat.Depth24);
GraphicsDevice.SetRenderTarget(renderTarget);
spriteBatch.Begin();
//scale and draw your texture here
spriteBatch.End();
GraphicsDevice.SetRenderTarget(null);
당신은 다음 그냥 다른 모든 질감처럼 나중에 그릴 수 있습니다 :
이spriteBatch.Draw(renderTarget, new Rectangle(), Color.White);
당신은 단지 같은 색상 데이터를 얻을 수 renderTarget.GetData
을 사용할 수 있습니다 당신은 Texture2D
으로하고 원하는대로 조작 할 것입니다.
렌더 타겟에 텍스쳐를 그리는 당신의 생각은 좋은 아이디어였습니다. 그러나'Texture2D.GetData' 메쏘드를 사용할 때'Color []'크기가 올바르지 않아서 문제가 발생했습니다. 올바른 크기. – eandr127
이 작업을 Texture2D에 직접 수행 할 수 있는지 확신하지 못합니다. 나는 당신이 원하는 방식으로 그릴 필요가있는 데이터를 포함하는 래퍼 클래스를 작성하도록 제안 할 것이다. – SpartanDonut