[OpenGL] VertexBuffer zu langsam!
-
Ich habe das Problem, das wenn ich einen VertexBuffer verwende, die FPS nicht sinkt, aber das Bild springt die anze zeit, und das sieht dann so aus als wenn es stottern würde. Das Problem habe ich nur wenn ich einen VertexBuffer verwenden. Ich dachte das würde vieleicht an meinem Code liegen, deswegen habe ich das mal mit einem der Nehe Tut's ausprobiert, und es stottert bei mir.
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=45
Stottert das auch bei euch? Denn wenn ich die exe die ich kompiliert habe freunden gebe und sie es starten, stottert es auh bei ihnen.
-
ja stottert, wenn die cpu kaum was zu tun hat, die gpu jedoch voll ausgelastet ist, kann es dazu kommen.
-
Entschuldige, ich habe jetzt nicht genu verstanden was du meinst. Also, wenn die gpu kaum ausgelastet ist, stottert es, und wenn sie voll ausgelastet ist nicht oder wie?
-
Code-Walker schrieb:
Entschuldige, ich habe jetzt nicht genu verstanden was du meinst. Also, wenn die gpu kaum ausgelastet ist, stottert es, und wenn sie voll ausgelastet ist nicht oder wie?
andersrum.
ist einfach ein synchronisierungs artefakt.kann natuerlich auch andere gruende haben, z.b. ICQ, windows-festplatten-indizierung usw.
aber wenn die cpu nichts zu tun hat ausser der gpu zu sagen 'zeichne, zeichne, zeichne' staut sich die ganze arbeit bei der gpu auf und dann wird das unschoen

-
Also, wenn ich selbst nur ein dreieck zeichne, aber in der CPU nichts rechne, stottert es trotzdem? Also, momentan zeichnet es ja so, das es so schnell wie es geht zeichnet, nicht mit festgelegten 30FPS sondern halt so schnell wie die gpu ist, wenn ich nun einen tmer verwenden würde und nur mit festgelegten 30fps zeichnen würde, würde es theoretisch nicht stottern?
Also, das beste ist dann, einen fps blocker ein zu bauen, und mehr mit der cpu zu hantieren?
-
Code-Walker schrieb:
Also, wenn ich selbst nur ein dreieck zeichne, aber in der CPU nichts rechne, stottert es trotzdem?
vermutlich nicht, der overhead auf cpu-seite fuer ein dreieck ist um einiges groesser als die gpu an zeit braucht um es zu zeichnen. entsprechend kannst du nur ein paar tausend einzelne dreiecke zeichnen. grob gesagt, ca 250dreieck pro drawcall sind for free.
Also, momentan zeichnet es ja so, das es so schnell wie es geht zeichnet, nicht mit festgelegten 30FPS sondern halt so schnell wie die gpu ist, wenn ich nun einen tmer verwenden würde und nur mit festgelegten 30fps zeichnen würde, würde es theoretisch nicht stottern?
sobald du mal komplexere dinge zeichnest z.b. mehrere models und shader und texturen wechselst, wird die cpu schon genug zu tun haben, dass sie nicht wie jetzt nur idle ist.
Also, das beste ist dann, einen fps blocker ein zu bauen, und mehr mit der cpu zu hantieren?
ist normalerweise nicht noetig.
das ist halt der unterschied zwischen theorie und praxis ;), dieser theoretische benchmark ist so unrealistisch, dass er dir nichts bringt.
normalerweise wuerde niemand eine framebremse einbauen wenn die cpu nichts zu tun hat, sondern der cpu etwas zu tun geben z.b. besseres culling, sodass die gpu entlastet wird und damit dann mehr 'sichtbares' gerechnet wird.
anders wuerde ja auch niemand die gpu warten lassen, wenn sie nichts zu tun hat weil die cpu voll ausgelastet ist, bekommt die gpu ein paar motion blur, glow etc. effekte zu tun.und dann stellt sich das problem eher nicht, dass die sachen ruckeln.
-
Habt ihr auch oft damit zu kämpfen, also es ist normal das das ruckelt? Niht das ich fröhlich vor mir hin programmiere und nen schicken spielchen mache, und plötzlich merke ich, es stottert ja immernoch un d will einfach nicht aufhören ...
Also, im prinzip sollte die cpu einfach mehr zu tun haben als die gpu, dann it es stotterfrei? Wenn ja, gibt es ein programm womit ich auslesen kann was die cpu und gpu gerade macht? Under Windoof?
-
sobald beide einigermassen gut ausgelastet sind, sollte es gut laufen, ansonsten kannst du ja mal versuchen den vertexbuffer bzw VBO jedes frame nur zu locken, dann koennte es sein dass cpu und gpu in sync laufen und somit das treiberbedingte flackern aufhoert.
was bleibt ist icq, msn, indizierung der festplatte und was sonst noch im hintergrund laeuft..
btw. ich hoffe du hast die neusten treiber
