Laden...

Grundlegendes zu Monogame und das verwenden von Texturen

Erstellt von Bender vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.873 Views
B
Bender Themenstarter:in
40 Beiträge seit 2013
vor 6 Jahren
Grundlegendes zu Monogame und das verwenden von Texturen

Ich spiel momentan mit Monogame rum und es gefällt mir eigentlich sehr gut. Hab auch mal kurz mit SFML und C++ gearbeitet, aber eine Sache ist mir momentan nicht völlig klar.

Ziel ist es ein kleines 2D Spiel zu programmieren, was ja an sich nicht schwer sein dürfte. Nur habe ich Probleme mit der Auflösung und den Größen von Bildern und Texturen. Zum Beispiel habe ich mir ein Hintergrundbild mit der Größe 1280 768 erstellt. Nun kann ich das Bild ja nun einfach in Monogame zeichnen. Das Problem sind aber die unterschiedlichen Auflösungen bei Monitoren. Wenn die Anwendung im Fenstermode ist und die Auflösung 1280 768 eingestellt ist, dann ist das Bild so wie es sein soll, scharf und gut sichtbar. Wenn ich aber die Anwendung im Fullscreenmode starte, ist das Bild verwaschen und unscharf. Klar ist mir, dass beim Fullscreen das Bild natürlich gestretched wird. Aber genau das will ich ja eigentlich nicht.

Ich möchte dass die Texturen bei unterschiedlichen Monitor Auflösung schön scharf sind. Das einzigste was mir dabei einfällt, ist für unterschiedliche Auflösung unterschiedliche Bilder zu nehmen. Aber sagen wir mal ich supporte 4 Auflösungen, dann muss ich ja jedes Bild 4 mal hinzufügen.

Gibt es eine Möglichkeit, mit 2D Grafiken, dass ich unterschiedliche Auflösungen supporte, ohne sichtlichen Qualitätsverlust?

Ich hatte bei Monogame der SpriteBatch.Begin() Methode noch den Parameter SamplerState.PointClamp mitgegeben, aber leider ist das immer noch nicht besser.

5.658 Beiträge seit 2006
vor 6 Jahren

Hi Bender,

Bitmaps vergrößern ist immer mit einem Qualitätsverlust verbunden, da du ja Informationen darstellen willst, die im Ausgangsbild nicht vorhanden sind.

Bitmaps verkleinern ist dagegen ohne Qualitätsverlust möglich, da du weniger Informationen darstellen willst als vorhanden.

Die einfachste Lösung wäre also, eine Textur zu verwenden, die groß genug für die größtmögliche Auflösung ist, und dann je nach tatsächlicher Auflösung zu skalieren. Du kannst auch mehrere Größen deiner Textur verwenden, und dann je nach Auflösung die entsprechende Variante anzeigen. Das sollte relativ einfach umzusetzen sein, auch wenn es in MonoGame keine automatische Unterstützung dafür geben sollte.

Für die Basics kannst du auch mal nach folgenden Stichwörtern googlen: Texture Sampling, Texture Interpolation und MipMapping.

Weeks of programming can save you hours of planning