Ich mache ein Sprite-basiertes Spiel und habe eine Reihe von Bildern, die ich in einer lächerlich großen Auflösung bekomme. Ich skaliere sie auf die gewünschte Sprite-Größe (zum Beispiel 64x64 Pixel), bevor ich sie in eine Spielressource konvertiere Sprite im Spiel, ich muss es nicht skalieren.
Wenn ich dieses kleine Sprite jedoch innerhalb des Spiels drehe (motorunabhängig), werden einige Zielpixel interpoliert und das Sprite sieht verschmiert aus.
Dies hängt natürlich sowohl vom Drehwinkel als auch vom Interpolationsalgorithmus ab, aber unabhängig davon gibt es nicht genügend Daten, um ein bestimmtes Zielpixel korrekt abzutasten.
Ich kann mir also zwei Lösungen vorstellen. Das erste besteht darin, das riesige Originalbild zu verwenden, es in die gewünschten Winkel zu drehen und dann alle resultierenden Variationen zu verkleinern und sie in einen Atlas zu legen, der den Vorteil hat, dass er recht einfach zu implementieren ist, aber naiv doppelt so viel Sprite verbraucht Platz für jede Umdrehung (jede Umdrehung muss in einen Kreis eingeschrieben sein, dessen Durchmesser die Diagonale des Rechtecks des ursprünglichen Sprites ist, dessen Fläche doppelt so groß ist wie die des ursprünglichen Rechtecks, vorausgesetzt, es handelt sich um quadratische Sprites).
Es hat auch den Nachteil, dass nur ein vordefinierter Satz von Rotationen verfügbar ist, was je nach Spiel in Ordnung sein kann oder nicht.
Die andere Möglichkeit wäre also, ein größeres Bild zu speichern und es beim Rendern zu drehen und zu verkleinern, was zu meiner Frage führt.
Was ist die optimale Größe für dieses Sprite? Optimale Bedeutung, dass ein größeres Bild keine Auswirkungen auf das resultierende Bild hat.
Dies hängt definitiv von der Bildgröße ab, der Anzahl der gewünschten Umdrehungen ohne Datenverlust bis zu 1/256, was der minimal darstellbare Farbunterschied ist.
Ich suche nach einer theoretischen allgemeinen Antwort auf dieses Problem, da das Ausprobieren einer Reihe von Größen zwar in Ordnung ist, aber alles andere als optimal ist.