Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 11:47

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Mi Okt 26, 2005 18:05 
Offline
DGL Member

Registriert: Sa Mär 20, 2004 22:48
Beiträge: 104
Hi,

hab' mal wieder ein kleines Problem mit dem timebased Movement, das will nicht so richtig bei mir :x
Hier mal ein kleiner Auszug aus dem Code:

Code:
  1.  
  2.  
  3. procedure Render;
  4. begin
  5.   x_axis := x_axis + (2 * timefactor);
  6.   glTranslateF(x_axis, 0, -12);
  7.  
  8.   glBegin(GL_QUADS);
  9.     glVertex3f(1, 1, 0);
  10.     glVertex3f(-1, 1, 0);
  11.     glVertex3f(-1, -1, 0);
  12.     glVertex3f(1, -1, 0);
  13.   glEnd();
  14. end;
  15.  
  16. procedure TGLForm.FormCreate(Sender: TObject);
  17. begin
  18.   QueryPerformanceFrequency(PerfCounterFreq);
  19.   // OpenGL-Funtionen initialisieren
  20.   ...
  21. end;
  22.  
  23. procedure TGLForm.ApplicationEventsIdle(Sender: TObject; var Done: Boolean);
  24. var
  25.  QPCStartCount, QPCEndCount : Int64;
  26. begin
  27. // In die Projektionsmatrix wechseln
  28. glMatrixMode(GL_PROJECTION);
  29. // Identitätsmatrix laden
  30. glLoadIdentity;
  31. // Viewport an Clientareal des Fensters anpassen
  32. glViewPort(0, 0, ClientWidth, ClientHeight);
  33. // Perspective, FOV und Tiefenreichweite setzen
  34. gluPerspective(60, ClientWidth/ClientHeight, 1, 128);
  35.  
  36. // In die Modelansichtsmatrix wechseln
  37. glMatrixMode(GL_MODELVIEW);
  38. // Identitätsmatrix laden
  39. glLoadIdentity;
  40. // Farb- und Tiefenpuffer löschen
  41. glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  42.  
  43. QueryPerformanceCounter(QPCStartCount);
  44. Render;
  45. QueryPerformanceCounter(QPCEndCount);
  46. TimeFactor := (QPCEndCount-QPCStartCount)/PerfCounterFreq*100;
  47.  
  48. ShowText;
  49.  
  50. // Hinteren Puffer nach vorne bringen
  51. SwapBuffers(DC);
  52. ...
  53. end;
  54.  
  55.  


Ich benutze das neuste OGL-Template, globale Variablen sind:

Code:
  1.  
  2. PerfCounterFreq: int64;
  3.   TimeFactor: single;
  4.   x_axis: single;
  5.  


Ich würde eigentlich in's Einsteiger-Forum posten, wäre da nicht noch das Prob mit dem Sonnenaufang. Also es soll ein zeitgeraffter Sonnenaufgang bzw. Untergang gerendert werden, da muss der Himmel heller werden, die ersten Sonnenstrahlen müssen langsam sichtbar werden usw. Als Untergrund soll einfach nur eine Wasserfläche dienen, also quasi so als würde man irgendwo auf dem Meer einen Sonneaufgang bewundern. Alles soll auf dem Wasser in Echtzeit reflektiert werden, wobei das nicht das Problem ist, sondern dass die Oberfläche aufgrund der Sonne glänzen muss, eine 1 zu 1 Reflektion also nicht in Frage kommt. Hätte einer 'ne Idee, wie ich sowas realisiere?


Mfg, Gran

_________________
Der Bump Mapping User ist nur zu faul, selbst eine Wand mit Tesselation zu erstellen ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Okt 26, 2005 18:24 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 19, 2003 10:44
Beiträge: 991
Wohnort: Karlsfeld (nahe München)
2 Fragen zwei Threads.

Zu deinem Problem zu dem Timebased Movement:

Bei dem Timefaktor handelt es sich um die vergange Zeit seit dem letzen Render Durchgang. Bei dir wird aber nur die Zeit hergenommen die die Funktion Render braucht.

Mach das mal so wie im Wiki:
http://wiki.delphigl.com/index.php/Timebased_Movement

MfG
Flo

_________________
Danke an alle, die mir (und anderen) geholfen haben.
So weit... ...so gut


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Okt 26, 2005 19:12 
Offline
DGL Member

Registriert: Sa Mär 20, 2004 22:48
Beiträge: 104
vielen Dank, das mit dem timebased Movement klappt jetzt :D

_________________
Der Bump Mapping User ist nur zu faul, selbst eine Wand mit Tesselation zu erstellen ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Okt 26, 2005 19:14 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 20, 2005 13:18
Beiträge: 1054
Wohnort: Dresden
Programmiersprache: C, C++, Pascal, OPL
Habe keine Erfahrung mit OpenGL und VCL, aber du dürftest das gewünschte Ergebnis erzielen, wenn du den Start direkt nach dem Errechnen des TimeFactors machst!
sprich:
Zitat:
Render;
QueryPerformanceCounter(QPCEndCount);
TimeFactor := (QPCEndCount-QPCStartCount)/PerfCounterFreq*100;
QueryPerformanceCounter(QPCStartCount);

Rest dürfte so bleiben dürfen.

Edit: Och man! Die 2 Minuten...

_________________
Denn wer nur schweigt, weil er Konflikte scheut, der macht Sachen, die er hinterher bereut.
Und das ist verkehrt, denn es ist nicht so schwer, jeden Tag zu tun als ob's der letzte wär’.
Und du schaust mich an und fragst ob ich das kann.
Und ich denk, ich werd' mich ändern irgendwann.

_________________Farin Urlaub - Bewegungslos


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste


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:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 15 Queries | GZIP : On ]