Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

17.02.2013, 22:07

Raycasting vs. echte 3D-Grafik

Hi,

ich entwickle mit C++ und SDL hauptsächlich auf meinem Netbook. Derzeit frage ich mich was wohl "schneller" ist: Raycasting (in Anlehnung an http://lodev.org/cgtutor/raycasting.html) oder eine analoge Szene unter Verwendung von OpenGL?

Raycasting ist imho CPU-lastig, OpenGL eher GPU-lastig. Die Raycasting-Sache läuft (1024x600, Vollbild) mit 9-15 FPS auf meinem Netbook. Ich habe eine OpenGL-Variante noch nicht probiert, aber was denkt ihr: erreiche ich damit höhere Frameraten?

Btw verwendet das Netbook einen "Intel(R) Atom(TM) CPU N450 @1.66GHz" und einen 0815 "Intel Display Controller". Ich weiß: das ist absolut keine Grundlage für solche Sachen :D

LG Glocke

Legend

Alter Hase

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

2

17.02.2013, 22:09

Ich würde auch bei der Konstellation erwarten, dass die OpenGL-Variante schneller wäre. Denn ein Geschwindigkeitswunder ist nen Atom auch nicht. Aber Vorsicht: OpenGL mit Intel-GPUs soll oft verbugged sein.
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

17.02.2013, 22:12

Raycasting wie bei Wolfenstein lief sogar auf 386ern schon flüssig.
Auf einer heutigen CPU dann erst recht :)
Ob es empfehlenswert ist, hängt davon ab, was du machen willst. Aber eigentlich benutzt sowas heute niemand mehr.

4

17.02.2013, 22:17

Raycasting wie bei Wolfenstein lief sogar auf 386ern schon flüssig.
Da wurden aber Boden und Decken nicht texturiert (sondern mit einer einheitlichen Farbe gefüllt, siehe http://image.dosgamesarchive.com/screens…olfenstein4.gif) Im ersten Elder Scrolls wurden die jedoch texturiert (vgl. http://www.mobygames.com/images/shots/l/…-sewer-like.png )

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Glocke« (17.02.2013, 22:23)


dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

17.02.2013, 22:23

Ich würde mal sagen, das hängt vor allem davon ab, wie gut deine Grafikkarte ist. Abgesehen davon, kann man natürlich auch auf der GPU Raycasten und überhaupt haben moderne CPUs kleine GPUs eingebaut. Mir fällt jedenfalls kaum ein Szenario ein, wo eine GPU einer puren CPU seitigen Softwarelösung nicht rein prinzipiell haushoch überlegen wäre...

6

18.02.2013, 00:22

Also bei dem Thema muss man echt ein bisschen mit den Begriffen aufpassen (Raytracing, Raycasting, Raymarching usw..). Da herrscht allgemein so großes Chaos, dass es sich scheinbar überhaupt nicht lohnt, sich an den Begriffen übermäßig aufzuhängen, aber das ist ein anderes Problem.

Wichtig ist jedenfalls, dass der verlinkte Artikel nur ein 2D Raycasting beschreibt. Du arbeitest da bloß mit einem Strahl pro Spalte, und das macht das ganze natürlich unglaublich viel einfacher. Dafür bist du aber auch sehr viel eingeschränkter.

Die gezeigten Szenen scheinen recht wenig Details zu haben, mit OpenGL sollte man da deutlich mehr als die 9-15 fps bekommen können. Insgesamt solltest du OpenGL benutzen, die Technik in dem Artikel ist viel zu limitiert um heute noch sinnvoll zu sein. Es ist schön zu sehen, was damals so benutzt wurde, aber heute will das niemand mehr wirklich haben.
'Echtes' Raytracing hat zum Polygonbasierten Ansatz zwar einige Vorteile, aber es ist noch nicht wirklich etabliert und eher ein Forschungsgebiet, als ein Anwendungsfall. Wenn du einfach nur irgendwie moderne 3D Grafik willst, ist Polygonrasterisierung (also mit OpenGL bzw. Direct3D) das Mittel der Wahl.
Lieber dumm fragen, als dumm bleiben!

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

7

18.02.2013, 06:40

Wenn es Raycasting ist und auf der CPU mit 15 FPS läuft, würde vermutlich selbst eine OnBoard-Karte da eine OpenGL-Leistung von 60+ FPS rausbekommen. Ich weiß jedenfalls, dass das vor 10 Jahren (!) auf meinem Laptop so war.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige