Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   OpenGL und threads benutzen? Sinvoll? (https://www.delphipraxis.net/41348-opengl-und-threads-benutzen-sinvoll.html)

No Voices 2. Mär 2005 10:02


OpenGL und threads benutzen? Sinvoll?
 
Hallo, :hi:

ich habe mich in letzter Zeit ein bischen mit OpenGL beschäftigt. ich habe bald festgestellt das zu erzeugung der umgebung sehr schnell sehr viel text zusammen kommt. :coder: Um später noch ausfühlicher zu werden und das ganze noch recht schnell am laufen zu halten dachte ich mir das ich den render code einfach in einem Thread unter bringe. Und andere sachen vieleicht auch noch in anderen threads. Geht das überhaupt und macht es sin??? :gruebel: Ich habe mich mal mit threads versucht, aber irgendwie passt es nicht ganz zu meinen vorstellung. Ich kann mir jedenfalls nicht vorstellen das große Spiele wie Quake3 nur 1 Thread besitzen. Wie gehe ich da ansatzweise Profesionel ran ?

Fubar 2. Mär 2005 10:06

Re: OpenGL und threads benutzen? Sinvoll?
 
Es waere sinnvoll die Umgebung nicht im Code zu basteln sondern die Daten zu laden.

Beispiele gibt es hier: http://nehe.gamedev.net/data/lessons....asp?lesson=10
und hier: http://nehe.gamedev.net/data/lessons....asp?lesson=31

sniper_w 2. Mär 2005 21:55

Re: OpenGL und threads benutzen? Sinvoll?
 
Zitat:

Ich kann mir jedenfalls nicht vorstellen das große Spiele wie Quake3 nur 1 Thread besitzen.
Ich schon, obwohl ich nicht sicher bin.

No Voices 24. Mär 2005 07:45

Re: OpenGL und threads benutzen? Sinvoll?
 
wie kann ich eine höhere Fram rate bekommen. Mit den OpenGL1.5 Template komme ich nur auf ca. 70 FPS obwohl nichts drin ist. mit Quacke3 komm ich mit allen details und höster auflösung auf ca. 300 FPS. Wo ist das problem?

gordon freeman 24. Mär 2005 09:40

Re: OpenGL und threads benutzen? Sinvoll?
 
Zitat:

Zitat von No Voices
Ich kann mir jedenfalls nicht vorstellen das große Spiele wie Quake3 nur 1 Thread besitzen.

Ich bin mir sogar ziemlich sicher das es genau so ist! Einen Render-Thread und fettich ist die Sache!

Zitat:

Zitat von No Voices
wie kann ich eine höhere Fram rate bekommen. Mit den OpenGL1.5 Template komme ich nur auf ca. 70 FPS obwohl nichts drin ist. mit Quacke3 komm ich mit allen details und höster auflösung auf ca. 300 FPS. Wo ist das problem?

Die Frage ist, wie du die Render-Procedure auslöst. Wenn du das mit 'nem Standard Delphi-Timer machst, dann haste natürlich 'ne begrenzte Frame-Zahl. Wenn du den DelphiX-Timer benutzt kannste schon mehr aus der Kiste rausholen.

Speedmaster 24. Mär 2005 09:41

Re: OpenGL und threads benutzen? Sinvoll?
 
Mach mal den Deep Buffer aus!

Falls du was zu OpenGL wissen willst geh doch bitte auf: DelphiGL.com!

Icemanemp 24. Mär 2005 09:53

Re: OpenGL und threads benutzen? Sinvoll?
 
Wirst kein Spiel finden, das mit vielen unabhängigen Thread programmiert ist! heutzutage ist die Grafik, KI und Physik usw. nicht voneinander getrennt. Daher haben viele Spieleentwickler schon angekündigt, das die ersten Spiele, die Threading und damit auch Multi-CPUs unterstützen erst ca. 2006 rauskommen, da in dem Jahr sehr sehr viele DesktopPCs Dualcore CPUs haben werden! Da diese ab Sommer zu haben sein werden, aber wie gesagt erst 2006 bei Spiele Performancemässig was bringen... (ausgenommen sind jetzt System die viele andere Threads während das Spiel an ist offen haben, da bringen Dualcore und Hyperthreading-System heute schon was!)
Es ist auch nciht so einfach eben mal Grafik, KI, Pyhsik und allgemeine Spielelogik auszulagern, da diese sehr stark verknüpft sind!

Speedmaster 24. Mär 2005 09:57

Re: OpenGL und threads benutzen? Sinvoll?
 
Zitat:

Zitat von Icemanemp
Wirst kein Spiel finden, das mit vielen unabhängigen Thread programmiert ist! heutzutage ist die Grafik, KI und Physik usw. nicht voneinander getrennt. Daher haben viele Spieleentwickler schon angekündigt, das die ersten Spiele, die Threading und damit auch Multi-CPUs unterstützen erst ca. 2006 rauskommen, da in dem Jahr sehr sehr viele DesktopPCs Dualcore CPUs haben werden! Da diese ab Sommer zu haben sein werden, aber wie gesagt erst 2006 bei Spiele Performancemässig was bringen... (ausgenommen sind jetzt System die viele andere Threads während das Spiel an ist offen haben, da bringen Dualcore und Hyperthreading-System heute schon was!)
Es ist auch nciht so einfach eben mal Grafik, KI, Pyhsik und allgemeine Spielelogik auszulagern, da diese sehr stark verknüpft sind!

Bin ich ehrlich gesagt nicht der Meinung, es gibt heutzutage durchaus Spiele die Multithreading benutzen, aber im begrenzten Mase!

No Voices 29. Mär 2005 09:40

Re: OpenGL und threads benutzen? Sinvoll?
 
Nein ich benuzte keinen Timer. Ich mache es über Das EventIdl aber ich komme nicht über 70 FPS Obwohl da noch nichts drin ist. wie gesagt bei Quake 3 wenn ich in der Confic-Datei die sperre raus nehme die bei Max 80 FPS steht ... also wenn ich diese raus nehme komme ich an 300 FPS und mehr ran. WARUM???

Michael_Bayer 29. Mär 2005 09:44

Re: OpenGL und threads benutzen? Sinvoll?
 
Zitat:

Zitat von No Voices
Nein ich benuzte keinen Timer. Ich mache es über Das EventIdl aber ich komme nicht über 70 FPS Obwohl da noch nichts drin ist. wie gesagt bei Quake 3 wenn ich in der Confic-Datei die sperre raus nehme die bei Max 80 FPS steht ... also wenn ich diese raus nehme komme ich an 300 FPS und mehr ran. WARUM???

Die schreiben das nicht in Delphi ;)

sniper_w 29. Mär 2005 11:43

Re: OpenGL und threads benutzen? Sinvoll?
 
Delphi-Quellcode:
Die schreiben das nicht in Delph
Stimmt. Aber das hat jetzt mit der Sache nichts zu tun. Ich bin mir 99,99% sicher, dass es deswegen so ist, weil die Option "Vecticale Synchronisation abwarten" bei dir eingeschaltet ist, und deswegen hast du eine niedriegere Framerate. Du musst sie ausscahlten, per Hand (DesktopEinstellungen), oder im Programm( wglSwapIntervalEXT(0) ).

No Voices 30. Aug 2005 14:41

Re: OpenGL und threads benutzen? Sinvoll?
 
Ich habe das problem gefunden. es hängt mit der bildwiederholfrequence vom monitor zusammen.

weiß jemand wo ich die durchlaufzahl vom queltext rausbekomm des es schneller läuft.

dizzy 30. Aug 2005 14:45

Re: OpenGL und threads benutzen? Sinvoll?
 
Ein Posting über deinem steht schon die Lösung ... seit mehreren Monaten :zwinker:

No Voices 4. Sep 2005 22:39

Re: OpenGL und threads benutzen? Sinvoll?
 
ich denke nicht das es so ist. Was hat die V-Sync mit der widerholrate vom monitor zu tun :wall:

wo stand den die lösung?

Ändere die Herzzahl von deinem monitor! bei 70 Hz haste 70 FPS und bei 120 Hz haste 120 FPS.

Das ist auch das Problem.

Wenn ich bei Quake 3 in die Config.cfg oder so gehe kann ich die anzeige an oder abschalten wo er mir die FPS anzeigen kann. da habe ich werte von über 300 FPS und ich kenne keinen monitor der das schaft auch nicht meiner. Also muß es eine andere möglichkeit geben!

Oder liege ich so falsch damit??? :gruebel:

Ultimator 4. Sep 2005 23:00

Re: OpenGL und threads benutzen? Sinvoll?
 
Ich denke auch, dass es mit VSync zusammenhängt.
Weil wenn das angeschaltet ist, muss die Grafikkarte pratisch "warten", bis sie das ganze Bild zeichnet, bis auch das gesamte Bild "zusammengesetzt" ist, da es ansonsten Tearing gibt..

dizzy 4. Sep 2005 23:47

Re: OpenGL und threads benutzen? Sinvoll?
 
Zitat:

Zitat von No Voices
ich denke nicht das es so ist. Was hat die V-Sync mit der widerholrate vom monitor zu tun :wall:

:shock: alles!

V(ertical)-Sync bezeichnet das Warten der Grafikkarte bis sie ein neues Bild an den Monitor schickt, und zwar eben so lange, bis die Scanline des Monitors die letzte Linie fertig gezeichnet hat. Und dass passiert nun mal eben genau so oft pro Sekunde wie dein Monitior eingestellt ist.
Vor allem gibst du dir ja noch selbst die Antwort :wall:

Und die Lösung ist sicher nicht am Moni zu fummeln, sondern viel mehr V-Sync softwareseitig abzuschalten. Wie das geht wurde schon im Thread gezeigt.

Im Übrigen macht ein Abschalten von V-Sync nur in 2 Fällen überhaupt Sinn:
  1. Benchmarking
  2. Fehler/Probleme mit V-Sync

V-Sync ist keine Last, sondern ein Freund und Helfer. Es wäre für Monitor- und Grafikkartenhersteller einfacher kein V-Sync zu betreiben. Man tut es aber trotzdem, um einem ganz bestimmten Effekt vorzubeugen: Wenn der Kathodenstrahl mitten im Bild eine neue Information von der Grafikkarte erhält, so entstehen je nach Pech ein oder mehrere Linien im Bild, da mehrere Zeitpunkte einer Bildfolge fälschlicherweise gleichzeitig in Teilen auf dem Bildschirm landen.
Das Problem besteht auf aktuellen Systemen nicht mehr so wie vor ein paar Jahren als man es einführte, da die Bildunterschiede zwischen 2 Frames oft so gering ausfallen, dass die Streifenbildung quasi ausbleibt (es gibt sie aber trotzdem).
Es macht folglich eigentlich gar keinen Sinn kein V-Sync zu betreiben, weil höher als der Monitor kann die Framerate eh nicht werden. Freut euch doch lieber dass ihr einen Indikator habt wie viel Rechenarbeit maximal getan werden muss, um die Perepherie optimal zu bedienen. Somit entfällt u.U. überschüssige Arbeit für CPU und Grafikkarte was Stromverbrauch und Wärmeentwicklung durchaus positiv beeinflusst ;).

Eine anmerkung zu TFT-Bildschirmen: TFTs haben für gewöhnlich keinen Kathodenstrahl :stupid:. Sie stellen viel mehr das Bild "auf einen Schlag" dar, und somit gäbe es theoretisch kein V-Sync. Allerdings gibt es eine Grenze bei der Verarbeitungsgeschwindigkeit in einem TFT, und um a) dies zu sichern und b) zur Kompatibilität wird auch bei TFTs eine Vertikalfrequenz angegeben über die ebenfalls V-Sync realisiert wird.



Gruss,
Fabian

Speedmaster 4. Sep 2005 23:58

Re: OpenGL und threads benutzen? Sinvoll?
 
Ich möchte anmerken das es einen guten Grund gibt V-Sync abzuschalten:
Wenn spiele nicht mit mehreren Threads betrieben werden kann es zu unschönen Effekten kommen mit V-Sync!
Falls ihr es mir nicht glaubt:
Startet einen Ego-Shooter mit V-Sync und spielt eine halbe Stunde, dannach macht das selbe ohne! Ihr werdet merken( allerdings nur wenn ihr ein guter Spieler seid ), das das Spielgefühl Schwammig ist wenn V-Sync an ist!

Deshalb ist es durchaus Sinnvoll das Spiel in 2 Threads oder mehr laufen zu lassen!

dizzy 5. Sep 2005 00:11

Re: OpenGL und threads benutzen? Sinvoll?
 
Zitat:

Zitat von Speedmaster
Wenn spiele nicht mit mehreren Threads betrieben werden kann es zu unschönen Effekten kommen mit V-Sync!

Nix dagegen: Fällt unter Punkt 2 :mrgreen:

supermuckl 5. Sep 2005 00:12

Re: OpenGL und threads benutzen? Sinvoll?
 
ähm was haben jetzt threads mit der vsync zu tun ?

dizzy 5. Sep 2005 00:13

Re: OpenGL und threads benutzen? Sinvoll?
 
Hat Speedmaster doch beschrieben =)

Speedmaster 5. Sep 2005 00:14

Re: OpenGL und threads benutzen? Sinvoll?
 
Zitat:

Zitat von supermuckl
ähm was haben jetzt threads mit der vsync zu tun ?

--> :wall:

--> Siehe oben!

supermuckl 5. Sep 2005 00:16

Re: OpenGL und threads benutzen? Sinvoll?
 
ne ich kapier nicht, wieso er sagt, das wenn spiele nicht mit mehreren threads ausgeführt werden usw..
welches spiel wäre das denn ?
ich dachte bis dato gibts die nicht :gruebel:

ausser das wohl jeder soundkanal nen thread hat, glaub ich eher nicht, das die grafik auchnoch gesplittet wird auf mehrere threads *g*

und jetzt will ich die technische erklärung, wieso threaded games mit vsync on schlecht laufen o_O

Speedmaster 5. Sep 2005 00:20

Re: OpenGL und threads benutzen? Sinvoll?
 
Zitat:

Zitat von supermuckl
ne ich kapier nicht, wieso er sagt, das wenn spiele nicht mit mehreren threads ausgeführt werden usw..
welches spiel wäre das denn ?
ich dachte bis dato gibts die nicht :gruebel:

ausser das wohl jeder soundkanal nen thread hat, glaub ich eher nicht, das die grafik auchnoch gesplittet wird auf mehrere threads *g*

und jetzt will ich die technische erklärung, wieso threaded games mit vsync on schlecht laufen o_O

Nochmal:
Ohne Multithreading läuft ein Spiel Schwammig wenn V-Sync an ist! Wenn es aus ist ist es egal!
Wer redet davon das die Grafik gesplittet werden soll? oO
Da gäbs ja Massenweisse Fehler!

supermuckl 5. Sep 2005 00:33

Re: OpenGL und threads benutzen? Sinvoll?
 
jo dann sag mal was da in threads ausgelagert wird, was dir dann deinen schwammigen effekt erzeugt.

Speedmaster 5. Sep 2005 00:45

Re: OpenGL und threads benutzen? Sinvoll?
 
Zitat:

Zitat von supermuckl
jo dann sag mal was da in threads ausgelagert wird, was dir dann deinen schwammigen effekt erzeugt.

Argh!! :wall:

Is das den so schwer zu verstehen??

Für dich:
- Ein oder mehrere Threads, mit der Gamelogik
- Ein Thread der die Gamelogik Grafisch umsetzt

supermuckl 6. Sep 2005 09:03

Re: OpenGL und threads benutzen? Sinvoll?
 
;) kannst noch so oft Argh sagen ;) wenn du es nicht erklärst kann es auch niemand begreifen.
Aber jetzt weis ich was du meinst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz