OpenGL Performanceproblem
-
Man sollte immer besser VOBs verwenden, ganz egal ob statischer oder dynamischer Inhalt.
-
Cpp_Junky schrieb:
Sollte man nicht gerade dann besser normale Vertex Buffer nehmen? Die VBOs müssen doch bei jeder Änderung neu übertragen werden oder nicht?

sobald du etwas zeichnest, wird es eh zur graka uebertragen. deswegen:
hustbaer schrieb:
Man sollte immer besser VOBs verwenden, ganz egal ob statischer oder dynamischer Inhalt.
wenn man hingegen weniger ahnung hat von ogl, bieten sich displaylisten an, weil darin mehr als nur die vertex optimierungen gemacht werden.
-
Achso *niemitvbogearbeitethat*
Ich hatte VBOs immer so verstanden, das man sie vorab "kompilieren" muss und sie anschliessend unveränderbar im VRAM verbleiben, während normale Vertex-Arrays lediglich aus dem "lokalen" RAM gelesen werden und somit jederzeit angepasst werden können.
-
Cpp_Junky schrieb:
Achso *niemitvbogearbeitethat*
Ich hatte VBOs immer so verstanden, das man sie vorab "kompilieren" muss und sie anschliessend unveränderbar im VRAM verbleiben, während normale Vertex-Arrays lediglich aus dem "lokalen" RAM gelesen werden und somit jederzeit angepasst werden können.vielleicht verwechselst du das mit displaylists. die werden compiliert und werden unveraendert im (V)Ram verbleiben.
-
rapso schrieb:
Cpp_Junky schrieb:
Sollte man nicht gerade dann besser normale Vertex Buffer nehmen? Die VBOs müssen doch bei jeder Änderung neu übertragen werden oder nicht?

sobald du etwas zeichnest, wird es eh zur graka uebertragen. deswegen:
hustbaer schrieb:
Man sollte immer besser VOBs verwenden, ganz egal ob statischer oder dynamischer Inhalt.
wenn man hingegen weniger ahnung hat von ogl, bieten sich displaylisten an, weil darin mehr als nur die vertex optimierungen gemacht werden.
Das ist rüchtüg.
Allerdings kann man IIRC ja auch VBOs mit display lists kombinieren. Oder täusche ich mich da jetzt?Trotzdem würde ich jedem Anfänger empfehlen gleich mit VBOs anzufangen, da man mit display lists irgendwann ansteht. Bzw. auch weil display lists in OGL 3.0 (hoffentlich) einfach nichtmehr da sein werden.
-
Ich hab jetzt LOD und VBOs noch nicht implementiert, ich denke, ich habe ein generelles Problem. Mein Bild wird momentan dargestellt durch 59.000 Dreiecke und läuft nur mit 16 FPS. Mag vielleicht mal jemand drübergucken? Ich hab den Sourcecode nun immerhin halbwegs aufgeräumt, sollte jedenfalls lesbar sein.
Was mir noch eingefallen ist: Jeder Punkt jedes Dreiecks hat auch eine eigene Normale, drückt das evtl die Performance?Der Sourcecode ist jedenfalls hier: *klick*
-
laeuft eigentlich recht fluessig, wie kann ich die fps anzeigen lassen damit ich die framerate sehe?
was mir auffaellt ist dass du InvalidateRect aufrufst um das zeichnen aufzurufen, dieser callback kann bei windows ein wenig dauern. versuch stattdessen gleich die renderfunktion aufzurufen.
-
Danke erstmal für's anschauen!
rapso schrieb:
laeuft eigentlich recht fluessig, wie kann ich die fps anzeigen lassen damit ich die framerate sehe?
Die FPS-Rate sollte eigentlich in der Konsole erscheinen, war erstmal einfacher als Schrift in OGL

rapso schrieb:
was mir auffaellt ist dass du InvalidateRect aufrufst um das zeichnen aufzurufen, dieser callback kann bei windows ein wenig dauern. versuch stattdessen gleich die renderfunktion aufzurufen.
Stimmt, das hatte ich völlig übersehen! Allerdings wird InvalidateRect ja nur beim Verändern der Sicht aufgerufen, das Standbild hat aber trotzdem nur die paar FPS

edit: Hey cool, ohne InvalidateRect läuft das Bild-Verändern wirklich eine Ecke schneller
Aber wie gesagt, das Standbild macht mir Sorgen 
-
Badestrand schrieb:
Danke erstmal für's anschauen!
rapso schrieb:
laeuft eigentlich recht fluessig, wie kann ich die fps anzeigen lassen damit ich die framerate sehe?
Die FPS-Rate sollte eigentlich in der Konsole erscheinen, war erstmal einfacher als Schrift in OGL

kenn ich, deswegen nutze ich immer: SetWindowText

ich werd dann noch mal schauen.[edit]
glMaterialfv( GL_FRONT_AND_BACK, GL_DIFFUSE, p.col.arr );kommentier das aus, dann wird es schnell. dieses flag verursacht dem optimizer im treiber kopfschmerzen.
versuch das lieber mitglColor4ubv...zu loesen.
geht bei mir ohne diese zeile von 16 auf 88fps.
-
Juchu, danke dir tausend mal!! Darauf wäre ich nie gekommen! Ist dann jetzt auch schnell genug
