Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

11

25.07.2006, 19:45

Hä Vertexbuffer in DDraw.... nein! Du brauchst den um Vertices abzulegen, hat hier nix zu suchen in DDraw. Da gibts eigentlich nur Surfaces.

nixda:
Hab ich ned gesagt ;) Hab nur gesagt das es in der aktuellen Doku keine DDraw Tutorials mehr gibt, da man lt. DXSDK mit RHW oder "normalen" Vertices arbeiten soll.

Zeitmessung
Is doch ganz einfach:
Mal ein dummer, aber sehr einfacher Ansatz ^^. Du hast 3 Bilder hintereinander etwa so, wobei das ganze ein Bild ist ;) :

-------------
x0 x1 x2 |
-------------

Wenn jetzt ne Zeit vergangen ist, als sagen wir mal 0.3s, dann zeichnen wir einfach das nächste Bild, wir blitten einfach einen anderen Bereich in den Backbuffer ;). Dazu hat unser Objekt Animation eine interne float Variable "time"

Die Variable fTimePassed nehmen wir einfach um diesen Zeitzähler (time) immer zu erhöhen um die vergangene Zeit seit dem letzten Frame :D.

Anonymous

unregistriert

12

25.07.2006, 19:49

Ja das ist mir ja schon klar gewesen koschka, nur wie schaffe ich diesen
Abstand von zum Beispiel 0.3 sec? Sleep ist eine Warte Funktion die
ich kenne und die suckt, dass wusste ich von Anfang an... Oder gibt
es da vielleicht einen Trick?

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

13

25.07.2006, 19:51

die 0.3s ist eine Konstande, nach dieser Zeit soll nun mal das nächste Bild angezeigt werden.

Code steht doch soweit schon oben, die "Animations" Variable (time) erhöhst (addierst) du eben immer um dieses fTimePassed.

Wenn der größer 0.3s ist, nächstes Bild

Anonymous

unregistriert

14

25.07.2006, 19:59

Och genau jetzt hab ichs verstanden :p Ist ja logischer als ich dachte :D Danke!

EDIT (21:04): Es funzt! :D Ich liebe euch :badgrin:

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

15

25.07.2006, 20:02

Na hoffentlich ;)

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
class Animation
{
public:
    Animation() : fTime(0.0f) {}
    inline void update(float fTimePassed) { if((fTime += fTimePassed) >= 0.9f) fTime= 0.0f; }
    inline void render() {}
private:
    float fTime;
};


Render ist dann ja klar, einfach nach fTime gehen und update immer bei render s.o. aufrufen ;)

Also erstes Bild bei 0-.3s, zweites bei .3-.6 und drittes für Rest, ist aber ein bissl kurz ;)

p.s. hör auf mit logik -.-

Werbeanzeige