MD2 Loader und Renderer



  • Ja die Rendering-Funktion war ein Schnellschuss 😃
    Die interpolierten Vertices? Du meinst diese Umrechnung aus dem 1Byte Format?



  • die Performance könnte man da doch noch steigern:
    -glVertex3fv anstatt glVertex3f

    man sollte es am besten einfach ganz unterlassen, den treiber mit unstrukturierten vertex-stueckchen zu belaestigen; ob man nun mit einzelnen oder wenigen floats ankommt macht da auch keinen unterschied mehr...



  • Bei MD2 ergibt sich allerdings später das Problem das bei Animationen alle Komponenten mit denen des nächsten Frames interpoliert werden müssen. Eine einfache Übergabe per Vertex-Array z.B. zieht da nicht mehr, weil die Interpolierung natürlich zur Laufzeit stattfindet.



  • dafuer gibt es vertex-shader.
    alternativ kann man den vertexbuffer der die eckpunkt-koordinaten enthaellt, einfach einmal pro frame ueberschreiben. alle indizes und weiteren parameter bleiben ja identisch und der treiber muss nicht staendig aufs neue versuche, die gleiche konnektivitaet zu optimieren.



  • Vertex Shader wäre natürlich ne gute Möglichkeit. Mich würde mal interessieren, wie der original Renderer der Quake2 Engine das gemacht hat.



  • Es ist halt auch die Frage ob man schon Vertexshader nutzen will, da sie neuere Grakas brauchen.
    Und rendern über Indexe mit Vertexbuffern ist natürlich auch möglich, aber man muss die Indexe noch berechnen, da Texturindexe und Vertexindexe getrennt sind.



  • Es würde sich bei MD2 sogar anbieten, da die Daten sowieso als Vertex-Array mit Index vorliegen. Interessant wäre jetzt, wie man die Animations-Berechnungen möglichst effizient dazwischenschieben kann (Wie gesagt eine Möglichkeit: Vertex Shader).



  • Es ist auch die Frage ob man schon Vertexshader nutzen will, da sie neuere Grakas brauchen

    vertex-shader werden (zumindestens im nvidia-treiber) bei fehlender hardware-unterstuetzung per software-emuliert - voraussetzung ist natuerlich, dass die entsprechenden extensions ueberhaupt vorhanden sind...
    die alternative waeren vertex buffer objects die man effizient (zb per sse) einmal pro frame mit neuen eckpunkt-koordinaten fuellt.



  • Die VBO-Extension gibts aber auch erst seit 2003.



  • ja gut, aber sagen wir mal man hat ne aeltere grafikkarte von ati oder nvidia und installiert 'nen aktuellen treiber, sind die extensions halt da.


Anmelden zum Antworten