2016-05-29 12 views
0

Ich habe einige verschiedene Steuerelemente, die ich habe, dass ich auf unterschiedliche Größe render Ziele zeichne.MonoGame Unterschiedliche Größe RenderTargets und Skalierungsprobleme

Wenn ich ein 64x64 textureA zu einem 800x600 Render-Ziel wie folgt zeichnen.

Graphics.SetRenderTarget(Canvas); 
_spriteBatch.Draw(textureA, new Rectangle(0, 0, 64, 64), srcRectangle, Color.White) 

Und dann zieht die 800x600 Ziel zu einem 1600x900-Bildschirm mit einem Anruf machen wie diese

Graphics.SetRenderTarget(null); 
_spriteBatch.Draw(Canvas, new Rectangle(100,100,800,600), Color.White 

Warum ist es meine Zeichnung textureA sehr verzogen und klein auf dem Bildschirm.

Wenn ich meine Canvas die gleiche Größe wie der Backbuffer, dann zeigt es sich gut, aber ich frage mich, warum das denkt, dass es meine Textur schrumpfen sollte, und gibt es eine Möglichkeit, dies auszuschalten?

Ich möchte Renderziele von beliebigen Größen erstellen und sie dann in ihrer ursprünglichen Größe auf den Bildschirm zeichnen. Ist das möglich?

+0

sind diese 2 'Draw' Aufrufe innerhalb der gleichen' Begin' und 'End'? – craftworkgames

Antwort

0

Wenn Sie zu einem RenderTarget zeichnen, wird der Back-Puffer (oder der bevorzugte Back-Puffer) weiterhin verwendet. Wenn Sie von der Back-Puffer-Dimension herunterskalieren, wird jede Textur, die zum RenderTarget gezeichnet wird, ebenfalls skaliert und durch Änderungen im Seitenverhältnis modifiziert.

Wenn Sie Ihre Texturen in demselben Aspekt behalten möchten, müssen Sie den Maßstab und das Seitenverhältnis nachverfolgen, die beim Zeichnen auf das Zielrechteck angewendet werden. Wäre gerne bereit, Code-Snippets auszuarbeiten oder zur Verfügung zu stellen, wenn Sie ein bisschen mehr darüber herausfinden könnten, was Sie erreichen wollen.