P
Danke für die Infos, aber was meinst du mit Double? Was ist die Delta-Zeit? Und wie erstelle ich einen Performance-Counter (misst das Durchlaufen der Schleife???). Und was meinst du mit Modulo?
also, ok, nochmal langsam.
Ein performance Counter ist ein Zeitmesser, der sich die aktuellen Ticks vom Rechner geben lässt, ist genauer als GetTickCount() und damit zu empfehlen...
diese Zeit misst du in jeder Schleife, und aus der Differenz kannst du quasi die DeltaZeit ermitteln. Weißt also wie lang er für einen Durchlauf gebraucht hat.
was ich mit dem double meine ist, das du eine variable anlegst ( double name ) und auf diese immer die deltazeit addierst. Und in jedem Frame rechnest du diese Zahl auf ein int um und erhälst dann prima einzelne Frames, die Du natürlich nochmal in Rects umrechnen musst.
Ich Zeig dir mal etwas Code:
m_animationsframe += deltaZeit*20 ;
//( bedeutet 20 Bilder pro Sekunde, ist eine angenehme Animationsgeschwindigkeit)
int framenr = (int)(m_animationsframe)%20;
//% = Modulo 20, bedeutet mein bild hat 20 Animationen, und soll natürlich nciht darüber hinausgehen, sonst seh ich ja nichts mehr.
RECT r = {
(framenr%m_spaltenanzahl) * m_width,
(framenr/m_spaltenanzahl) * m_height,
((framenr%m_spaltenanzahl)+1)* m_width,
(framenr/m_spaltenanzahl+1) * m_height
};
//width und height sind die dimensionen des rects, und spaltenanzahl wieviele animationen nebeneinander in der textur liegen
//so jetz hab ich dir ja schon alles verraten ^^
dann brauchst du das bild nur noch im Rect r rendern lassen und fertig.
ich finde es prinzipiell besser eine grafik zu nutzen, weil es einfach einfacher zu handlen ist und vielleicht auch ressourcenschonender ^^