Aktuelle Zeit: 29.03.2024, 11:49

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags: Re: Problem mit Bewegung
BeitragVerfasst: 24.04.2009, 22:37 
Offline

Registriert: 16.01.2008, 12:31
Beiträge: 79
Das ist dann das Problem, also muss ich wohl QueryPerformanceCounter benutzen.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Problem mit Bewegung
BeitragVerfasst: 25.04.2009, 22:39 
Offline

Registriert: 12.09.2008, 21:41
Beiträge: 187
Wohnort: Deutschland
Hi,

ich würde sowieso den QueryTimer empfehlen, da bei mir schon Schritte mit der 1ms einfach nur ***** Aussahen, also wieso nicht gleich nen Level präziser werden :-)

Gruß
Scarabol

_________________
My Toolbox:
- Irrlicht 1.7.1
- Blender 2.49a
- Microsoft Visual C++ Express Edition 2008
- Newton Game Dynamics 2.xx
Regeln zur Programmierung:
Regel 1: Die Programmiersprache hat keine Fehler.
Regel 2: Solltest du doch einen Fehler finden, tritt automatisch Regel 1 in Kraft.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Problem mit Bewegung
BeitragVerfasst: 26.04.2009, 16:42 
Offline
Moderator
Benutzeravatar

Registriert: 25.03.2007, 18:11
Beiträge: 834
Wohnort: Hagen, NRW
Musst du nichtmal unbedingt.
Du kannst auch einfach in der hauptschleife
device->yield()

Aufrufen.
Im Moment hast du eine FPS jenseits der 1000. Das wird sich ändern ;)

_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Problem mit Bewegung
BeitragVerfasst: 27.04.2009, 12:52 
Offline

Registriert: 16.01.2008, 12:31
Beiträge: 79
Ja ich hab FPS jenseits von 1000. :)

Meine Hauptschleife sieht nun so aus.
Code:
  this->initGfx();
  this->initGS();
  this->initElse();
  this->isRunningValue = true;
 
  this->timerValue->Reset();
  irr::s32 lastFps = -1;
  while (deviceValue->run() && isRunningValue) {
    if (deviceValue->isWindowActive()) {
      this->gsMgrValue->OnUpdate(this->timerValue->GetTimeFactor());
      this->gsMgrValue->OnDraw();
     
      irr::s32 fps = deviceValue->getVideoDriver()->getFPS();
      if (lastFps != fps) {
            irr::core::stringw str = L"[";
            str += deviceValue->getVideoDriver()->getName();
            str += "] FPS:";
            str += fps;

            deviceValue->setWindowCaption(str.c_str());
            lastFps = fps;
      }
     
    } else {
      deviceValue->yield();
    }
  }
  deviceValue->drop();
}


EDIT:
Ok ich rufe jetzt innerhalb der Schleife nochmal
Code:
deviceValue->yield();

und nun habe ich nur noch ~64 FPS, und kann mich mit einem Wert von 200 vernünftig bewegen. :)
Danke.


Zuletzt geändert von Zerotag am 27.04.2009, 12:55, insgesamt 1-mal geändert.

Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Problem mit Bewegung
BeitragVerfasst: 27.04.2009, 12:54 
Offline
Moderator
Benutzeravatar

Registriert: 25.03.2007, 18:11
Beiträge: 834
Wohnort: Hagen, NRW
das yield würde ich nicht in den else zweig packen, sonder einfach nach dem ondraw oder so. Damit kommst du dann nicht über 1000 FPS und kannst somit den Irrlicht Timer verwenden. Außerdem hast du dann keine 100% CPU Auslastung.

_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ]  Gehe zu Seite Vorherige  1, 2

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de