Hm das funktioniert nur bedingt. Also gespiegelt wird es zwar, aber meine Textur ist animiert, d.h. sie spielt nacheinander Frames (teile der Textur) ab. Wenn ich das jetzt spiegele, dann wird zwischendurch das Bild immer transparent. Vermutlich liegt das daran, das mein FrameSet "leere Plätze" aufweist (siehe Anhang).
Es werden in dem FrameSet nun nacheinander die Texturkoordinaten so transformiert, dass nacheinander alle Frames angezeigt werden.
Klappt super. Nur wenn ich jetzt spiegele, dann scheint er die Frames nichtmehr richtig zu berechnen:
Delphi-Quellcode:
Scale(1 / ColCount, 1 / RowCount);
_X := 1 / ColCount * (_Frame mod ColCount); //X-Koordinate des Frames
_Y := 1 / RowCount * ((_Frame - (_Frame mod ColCount)) div ColCount); //Y-Koordinate des Frames
Move(Get2DXVector2(_X, _Y));
Hier werden die Texturkoordinaten einfach entsprechend transformiert und das scheint mit der Reflektion nicht zu funktionieren.
Row und ColCount = Anzahl Reihen und Spalten im FrameSet
_Frame gibt den aktuellen Frame an.
Move und Scale sind einfach Methoden die die D3DDevice Funktionen zum Transformieren kapseln.
Hier klappt irgendwas nicht richtig. Hoffe das nun gut erklären gekonnt zu haben