Hallo!
Op dit moment ben ik als hobbyprojectje aan het werk aan een eenvoudig spelletje voor de iPhone, en ben bezig de 3d engine-in-wording die ik voor de Mac gemaakt heb te porten naar de iPhone. Dit gaat redelijk voorspoedig en alle functionaliteit van de engine die ik al had draait nu op de iPhone. Dit was nog niet zo veel, maar de basics zitten er ik; resource beheer, een scene graph en een constructie om objecten te kunnen bewegen en animeren enzo... Allemaal prima.
Hier is een screenshot van hoe het er nu uit ziet: http://emle.nl/forumpics/site/planes_grid.png. Het vliegtuigje heeft niets te maken met 't spelletje wat ik maak, maar is een ideaal testobjectje voor de 3d engine en de ondersteunende functionaliteit...
Nu ben ik zo ver dat ik na moet gaan denken over materialen; de beschrijving welke textures, lichten, etc horen bij een 'renderable', een zichtbaar 3d object. Dit komt in de praktijk neer op een heleboel OpenGL *ClientState en glEnable/glDisable calls, waarvan sommige best duur zijn om aan te roepen. Wat is een handige manier om dit te minimaliseren?
Op dit moment heb ik een class genaamd RenderState waarin ik lokaal cache wat de opengl state zou moeten zijn. Zodra er een ander materiaal gekozen wordt vergelijk ik alle members van die class met het nieuwe materiaal en voer alleen de state changes door die nodig zijn voor het nieuwe materiaal. Dit werkt nu aardig, maar ik ben bang dat het de potentie heeft een beetje uit de hand te lopen als de engine groeit en er meer en meer state onthouden moet worden... Help?
Op dit moment ben ik als hobbyprojectje aan het werk aan een eenvoudig spelletje voor de iPhone, en ben bezig de 3d engine-in-wording die ik voor de Mac gemaakt heb te porten naar de iPhone. Dit gaat redelijk voorspoedig en alle functionaliteit van de engine die ik al had draait nu op de iPhone. Dit was nog niet zo veel, maar de basics zitten er ik; resource beheer, een scene graph en een constructie om objecten te kunnen bewegen en animeren enzo... Allemaal prima.
Hier is een screenshot van hoe het er nu uit ziet: http://emle.nl/forumpics/site/planes_grid.png. Het vliegtuigje heeft niets te maken met 't spelletje wat ik maak, maar is een ideaal testobjectje voor de 3d engine en de ondersteunende functionaliteit...
Nu ben ik zo ver dat ik na moet gaan denken over materialen; de beschrijving welke textures, lichten, etc horen bij een 'renderable', een zichtbaar 3d object. Dit komt in de praktijk neer op een heleboel OpenGL *ClientState en glEnable/glDisable calls, waarvan sommige best duur zijn om aan te roepen. Wat is een handige manier om dit te minimaliseren?
Op dit moment heb ik een class genaamd RenderState waarin ik lokaal cache wat de opengl state zou moeten zijn. Zodra er een ander materiaal gekozen wordt vergelijk ik alle members van die class met het nieuwe materiaal en voer alleen de state changes door die nodig zijn voor het nieuwe materiaal. Dit werkt nu aardig, maar ik ben bang dat het de potentie heeft een beetje uit de hand te lopen als de engine groeit en er meer en meer state onthouden moet worden... Help?