Goeienavond,
Ik ben bezig met een hobby projectje om Managed DirectX te leren. Hiervoor ben ik nu een functie aan het schrijven die meshes van een bestaand, oud spel in moet gaan lezen. Het bestandsformaat (PIE) is afkomstig van Warzone 2100, voor het geval dat iemand het wilt weten of het misschien nuttige info is.
In dit PIE formaat zit de info over de mesh opgeslagen in een vertex lijst en een lijst van polygons met verwijzing naar de vertices, dus in principe is het een kwestie van de vertices inlezen en in een vertexbuffer stoppen en vervolgens de polygonen in te lezen in een indexbuffer en dan deze gebruiken om de mesh te renderen, toch? Goed...
Het probleem
In het PIE formaat zijn polygonen van een hogere graad dan triangles toegestaan. In principe zijn alle graden zo'n beetje geldig (voor zover ik het bestandsformaat heb kunnen ontleden) en ze worden vrolijk door elkaar gebruikt, maar ik denk dat dit op te lossen is door ze als TriangleFan te renderen.
Mijn probleem is alleen dat ik geen flauw idee heb hoe ik dit met de indexbuffer aan de praat moet krijgen. Alle voorbeelden die ik van de indexbuffer heb gezien gebruiken Triangles als polygonen, dus dat schoot al niet op. Kan ik niet gewoon een array van arrays meegeven aan de indexbuffer als data? Zo zou ik (vanuit mijn n00b C# / DirectX oogpunt) verschillende vormen polygonen eenvoudig moeten kunnen renderen met een enkele call naar DrawIndexedPrimitives(PrimitiveType.TriangleFan...), niet?
Alleen... een indexbuffer aanmaken met typeof(short[]) was geen succes. Ongetwijfeld doe ik wat heel simpels fout, dus als iemand ziet waar het fout gaat, of een alternatief weet, dan hoor ik het graag
Ik ben bezig met een hobby projectje om Managed DirectX te leren. Hiervoor ben ik nu een functie aan het schrijven die meshes van een bestaand, oud spel in moet gaan lezen. Het bestandsformaat (PIE) is afkomstig van Warzone 2100, voor het geval dat iemand het wilt weten of het misschien nuttige info is.
In dit PIE formaat zit de info over de mesh opgeslagen in een vertex lijst en een lijst van polygons met verwijzing naar de vertices, dus in principe is het een kwestie van de vertices inlezen en in een vertexbuffer stoppen en vervolgens de polygonen in te lezen in een indexbuffer en dan deze gebruiken om de mesh te renderen, toch? Goed...
Het probleem
In het PIE formaat zijn polygonen van een hogere graad dan triangles toegestaan. In principe zijn alle graden zo'n beetje geldig (voor zover ik het bestandsformaat heb kunnen ontleden) en ze worden vrolijk door elkaar gebruikt, maar ik denk dat dit op te lossen is door ze als TriangleFan te renderen.
Mijn probleem is alleen dat ik geen flauw idee heb hoe ik dit met de indexbuffer aan de praat moet krijgen. Alle voorbeelden die ik van de indexbuffer heb gezien gebruiken Triangles als polygonen, dus dat schoot al niet op. Kan ik niet gewoon een array van arrays meegeven aan de indexbuffer als data? Zo zou ik (vanuit mijn n00b C# / DirectX oogpunt) verschillende vormen polygonen eenvoudig moeten kunnen renderen met een enkele call naar DrawIndexedPrimitives(PrimitiveType.TriangleFan...), niet?
Alleen... een indexbuffer aanmaken met typeof(short[]) was geen succes. Ongetwijfeld doe ik wat heel simpels fout, dus als iemand ziet waar het fout gaat, of een alternatief weet, dan hoor ik het graag





