Voor de lol ben ik bezig in C++ een 3D physics/graphics engine te ontwerpen (als leerervaring), maar momenteel zit ik met wat vragen qua design.
Het huidige ontwerp bevat een simpele resource-counting ResourceManager class die alle textures en models on-demand inlaadt en pointers uitgeeft aan de data. Verder is er een Renderer die een vector Object3D instances inneemt bestaande uit de pointers naar de textures en model, alsmede positie/hoek informatie en eventueel wat cache (transformatie matrix).
Mijn vraag is: Wat is de meest efficïente manier om de beschikbare data, in objectspace, te transformeren naar worldspace, en door te schuiven naar OpenGL?
1) Moet ik de object->worldspace transformaties laten uitvoeren door de CPU, of de GPU? Word dit niet een enorme last in een physics omgeving, waar alle transformaties constant opnieuw gedaan moeten worden?
2) Wat is de snelste manier om al deze vers gegenereerde data te pompen naar de GPU? Rekening houdend met dat veel data kan veranderen per frame. Wat is er deprecated in OpenGL en wat is de huidige manier? (tutorials zijn niet consistent) Ik las over Vertex Buffer Objects maar hoe dat werkt blijkt ook al per tutorial te verschillen. (Snapt Vertex en Geometry Shaders totaal niet)
Hopelijk een niet al te ingewikkeld probleem.
Het huidige ontwerp bevat een simpele resource-counting ResourceManager class die alle textures en models on-demand inlaadt en pointers uitgeeft aan de data. Verder is er een Renderer die een vector Object3D instances inneemt bestaande uit de pointers naar de textures en model, alsmede positie/hoek informatie en eventueel wat cache (transformatie matrix).
Mijn vraag is: Wat is de meest efficïente manier om de beschikbare data, in objectspace, te transformeren naar worldspace, en door te schuiven naar OpenGL?
1) Moet ik de object->worldspace transformaties laten uitvoeren door de CPU, of de GPU? Word dit niet een enorme last in een physics omgeving, waar alle transformaties constant opnieuw gedaan moeten worden?
2) Wat is de snelste manier om al deze vers gegenereerde data te pompen naar de GPU? Rekening houdend met dat veel data kan veranderen per frame. Wat is er deprecated in OpenGL en wat is de huidige manier? (tutorials zijn niet consistent) Ik las over Vertex Buffer Objects maar hoe dat werkt blijkt ook al per tutorial te verschillen. (Snapt Vertex en Geometry Shaders totaal niet)
Hopelijk een niet al te ingewikkeld probleem.

Laatst bewerkt: