Ich versuche, bewegungsunabhängige Sprites in einem 2D-Spiel auflösungsunabhängig zu rendern. Mein Plan ist es, in einem festen Koordinatensystem in meiner Welt zu arbeiten (z. B. 960 x 540) und diese mithilfe der orthografischen Projektion nach oben oder unten zu skalieren, um sie an das Ansichtsfenster anzupassen. Ich mache Letterboxing, um verschiedene Seitenverhältnisse zu handhaben.
Gemäß den meisten Tutorials kann ich beliebige Abmessungen für den Ansichtsstumpf verwenden, aber ich habe festgestellt, dass dies in vielen Fällen zu dem Problem führt, dass ich im Ansichtsfenster Subpixelwerte verwende. Beispielsweise endet ein Scheitelpunkt bei (62,62) in einem Koordinatensystem von 960 x 540 bei (51.6666667,51.6666667) in einem Ansichtsfenster mit den Abmessungen 800 x 450.
Dabei sind mir zwei Arten von Problemen aufgefallen:
- Die Texturabtastung ändert sich ständig für Objekte, die sich in Bewegung befinden, je nachdem, wo sich die Scheitelpunkte in Bezug auf ein Pixelzentrum befinden
- Meine Objekte werden aufgrund von Rundungen von Zeit zu Zeit horizontal oder vertikal um ein Pixel gedehnt
Was ist die beste Vorgehensweise, um dies zu vermeiden (unter Wahrung der Unabhängigkeit der Auflösung in Bezug auf Bewegungsgeschwindigkeiten usw.)? Und wo wäre der beste Ort, um dies anzugehen? Bevor Sie die Scheitelpunkte an die Shader oder in den Scheitelpunkt-Shader übergeben?