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>
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
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...
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.
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>
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
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.