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

Aktuelle Zeit: So Sep 07, 2025 21:42

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 21 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Mo Apr 28, 2003 18:34 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Zitat:
Wie bekomme ich die Frames pro Sekunde (bisher hab ich bei jedem neuzeichnen eine integervariable um 1 erhöht und per timer alle 1 Sekunden angezeigt und auf 0 gesetzt) - ist das so OK oder kommen da völlig falsche Werte raus (will es net 100% richtig, aber halt ungefähr sollte es stimmen (+-10% sind verkraftbar :) )

Die Methode ist AFAIK so ziemlich die genauste, und die nutze ich auch.Alles andere wie z.B. ein Messen über einen kürzeren Zeitraum und dann auf FPS hochzurechnen ist anscheinend beliebter, meiner Meinung nach aber nicht so genau.

Zitat:
Und noch eine Frage: Bei mir flimmert es wahnsinnig (habe nach diesem Tut gearbeitet: <a href='http://www.geocities.com/SiliconValley/5759/inhalt.html' target='_blank'>http://www.geocities.com/SiliconValley/575...759/inhalt.html</a>
(bin bei Kapitel 4/5)....
Ich zeichne auf ein Panel, habe da so Frameraten von ~200 pro Sek. bei einem 260k-Pixel großen Fenster und einem sich drehenden Rechteck.... (~650x400), aber es flimmert wie blöd!

Eigentlich dürfte es unabhängig von der Rendergeschwindigkeit auf keinen Fall flackern, denn das Doublebuffering (Vorderer und hinterer Puffer, die permanent getauscht werden) sollte dies verhindern.Wenn du deinen OpenGL-Renderkontext allerdings ohne das opDoubelBuffered-Flag erstellst, wird dies nicht benutzt, sondern nur ein einzelner Puffer.Dies führt dann zu einem nervigen Flackern.

Zitat:
ausserdem: wenn das fenster mit openGL nicht im vordergrund ist, dann flimmert das icon von FlashGet (so ein ~20x20 Pixel großes ding was rechts am bildschirm klebt) auch ganz arg, wie hängt das zusammen?

Normal ist das eigentlich nicht.Installier mal die neusten Grafikkartentreiber, dies hier gibt : <a href='http://www.nvidia.com' target='_blank'>http://www.nvidia.com</a>

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Apr 28, 2003 21:16 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Jan 04, 2003 21:23
Beiträge: 674
Wohnort: Köln
lad mal ein template von der Seite zu Forum (*hrmpf* IMO kennen einige die Seite noch nichtmal ;)) (=www.delphigl.com) runter...
wenns dann klappt, dann hasste was falsch gemacht ;)
kannst ja mal di unit mit hochladen ;)

_________________
. . .


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Apr 28, 2003 21:24 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Guest hat geschrieben:
wo mach ich das mit dem renderkontext?

das enzige wo ich (durch zufall) ein DoubleBuffered reinbekommen habe, war das

glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT and GL_DoubleBuffer);

Im glClear hat ein GL_DoubleBuffer rein garnix zu suchen.Das Doublebuffering aktivierst du, in dem du beim erstellen des Pixelformates das PFD_DOUBLEBUFFER-Flag im dwFlags-Feld deines TPixelFormatDescriptors übergibst.Damit teilst du dann Windows mit, das deine OpenGL-Anwendung sowohl einen Backbuffer als auch einen Frontbuffer nutzt.Gezeichnet wird dann automatisch in den Backubuffer, den du dann mit dem Befehl SwapBuffers(DC) nach dem Zeichnen deiner Szene nch vorn holst und somit sichtbar machst.

Guest hat geschrieben:
ps: das gehört glaub ich ins Anfängerboard


Richtig erkannt ;) Ich verschieb dein Thread deswegen auch...

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Apr 29, 2003 15:33 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Probiers mal mit nem SwapBuffers(DC) am Ende deiner Zeichenroutine...das glFlush ist dort überflüssig und sollte durch diese Anweisung ersetzt werden.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Apr 29, 2003 15:46 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Eigentlich sollte der Code keine Probleme machen...aber lass mal bitte das sleep(1); im Idle-Loop weg...das hat da nix zu suchen und macht dein Programm nur unnötig langsam.

P.S. : Beschreib mal das "Flimmern" etwas genauer...vielleicht liegt das Problem an einer anderen Stelle.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Apr 29, 2003 17:12 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 29, 2002 10:37
Beiträge: 251
Wohnort: Ulm
also, hier mal ein ganz kurzer auszug von dem, wie ich es mache (mit kommentaren!)



<!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre>
<span class='comment'>(* die variablen der form: *)</span>
frames : integer; <span class='comment'>(* wird im oncreate initialisiert mit <span class='integer'>0</span> *)</span>
int64cFrequency,
oldcounter,
newCounter: int64;
OpenGLReady: Boolean; <span class='comment'>(* wird <span class='reserved'>in</span> oncreate am anfang false, dann true, wenn ogl richtig geladen *)</span>


<span class='reserved'>procedure</span> TformMain.RenderScene;
<span class='reserved'>var</span>
helper: real; <span class='comment'>(* hilfs-variable.. *)</span>
<span class='reserved'>begin</span>
<span class='reserved'>if</span> frames=<span class='integer'>0</span> <span class='reserved'>then</span>
QueryPerformanceCounter(OldCounter)
<span class='reserved'>else</span>
QueryPerformanceCounter(NewCounter);

<span class='reserved'>if</span> OpenGLReady <span class='reserved'>then</span>
<span class='reserved'>begin</span>


<span class='comment'>(* onpaint anfang *)</span>
glClear(GL_COLOR_BUFFER_BIT <span class='reserved'>or</span> GL_DEPTH_BUFFER_BIT);
<span class='comment'>(* objekte anfang *)</span>







SwapBuffers(DC);
<span class='comment'>(* onpaint ende *)</span>

inc(frames);

<span class='reserved'>if</span> frames=<span class='integer'>100</span> <span class='reserved'>then</span>
<span class='reserved'>begin</span>
QueryPerformanceCounter(NewCounter);
helper := NewCounter-OldCounter;
helper := helper / int64cFrequency;
framerate := frames / helper;
formmain.Caption := 'Three D Museum /// framerate : ' +
floattostrf(framerate,fffixed,<span class='integer'>6</span>,<span class='integer'>2</span>) + ' FPS /// '
+ ' timerate : ' +
floattostrf(helper, fffixed, <span class='integer'>6</span>,<span class='integer'>2</span>)+
' seconds';
frames := <span class='integer'>0</span>;
<span class='reserved'>end</span>;
<span class='reserved'>end</span>;
<span class='reserved'>end</span>;
</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3-->

viel spaß damit..

_________________
http://www.rochus.net


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Apr 29, 2003 19:19 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Jan 04, 2003 21:23
Beiträge: 674
Wohnort: Köln
kann das nicht an VSync liegen??
schlate das am besten mal zum testen aus...

_________________
. . .


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Apr 29, 2003 19:31 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Jan 04, 2003 21:23
Beiträge: 674
Wohnort: Köln
rechtsklick auf desktop->eigenschaften->einstellungen->erwitert->reiter mit deiner Graka->opengl-einstellungen->Vertical Synchronization standardmäßig ein...

wie man das mit dem Prog manuell macht steht irgendwo in den Snippets bei den Tuts, ist abe im Moment ja nicht so wichtig ;)

_________________
. . .


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 21 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 13 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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 14 Queries | GZIP : On ]