2013-12-23 4 views
3

Draw() 메서드를 사용하지 않고 Texture2D 크기를 조절하려고합니다. 이유는 입니다. 추가 조작을 수행하기 전에는 Texture2D을 그리지 않을 것입니다. Texture2D을 필드로 저장하고 있습니다.Draw()없이 Texture2D 크기 조절

+0

이 작업을 Texture2D에 직접 수행 할 수 있는지 확신하지 못합니다. 나는 당신이 원하는 방식으로 그릴 필요가있는 데이터를 포함하는 래퍼 클래스를 작성하도록 제안 할 것이다. – SpartanDonut

답변

0

제가 생각할 수있는 가장 먼저 생각한 것은 Texture2D.GetData을 사용하고 Color, uint 또는 기타 배열로 텍스처를 저장 한 다음 배율을 수행하는 것입니다.
이것은 기본적인 컴퓨터 그래픽 지식을 필요로하며, 그렇게하는 것이 더 좋은 방법이라고 생각하지 않습니다.

1

이미지에 어떤 이미지 조작을 수행할지 모르겠지만 이러한 조작을 수행하기 전에 크기 조정을 수행하지 않는 것이 좋습니다. 그렇게 할 수있는 방법이 있다면 이미지를 조작 한 후에 크기를 조정하십시오. 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으로하고 원하는대로 조작 할 것입니다.

+0

렌더 타겟에 텍스쳐를 그리는 당신의 생각은 좋은 아이디어였습니다. 그러나'Texture2D.GetData' 메쏘드를 사용할 때'Color []'크기가 올바르지 않아서 문제가 발생했습니다. 올바른 크기. – eandr127