Nachdem ich meinem Spiel Geschwindigkeit hinzugefügt habe, habe ich das Gefühl, dass meine Texturen zucken. Ich dachte, es wären nur meine Augen, bis ich es schließlich in einem Screenshot festhielt:
Der linke ist das, was in meinem Spiel gerendert wird. Das rechte ist das ursprüngliche Sprite, das eingefügt wurde. (Dies ist ein Screenshot aus Photoshop, 6-fach vergrößert.)
Beachten Sie, dass die Kanten Aliasing sind - es sieht fast wie Subpixel-Rendering aus. Wenn ich meine Sprites (die Position und Geschwindigkeit als Ints haben) nicht gezwungen hätte, mit ganzzahligen Werten zu zeichnen, würde ich schwören, dass MonoGame mit Gleitkommawerten zeichnet. Aber es ist nicht so.
Was könnte die Ursache dafür sein, dass diese Dinge verschwommen erscheinen? Es passiert nicht ohne angewendete Geschwindigkeit.
Um genau zu sein, meine SpriteComponent
Klasse hat ein Vector2 Position
Feld. Wenn ich anrufe Draw
, benutze ich im Wesentlichen new Vector2((int)Math.Round(this.Position.X), (int)Math.Round(this.Position.Y))
für die Position.
Ich hatte vorher einen Fehler, bei dem sogar stationäre Objekte zitterten - das lag daran, dass ich den geraden Position
Vektor verwendete und die Werte nicht auf rundete ints
. Wenn ich Floor
/ Ceiling
anstelle von rund verwende, sinkt / schwebt das Sprite (ein Pixel Unterschied in beide Richtungen), zeichnet aber immer noch verschwommen.