Mesh: Vertex und Index buffer?



  • Hallo Leute,

    Polygone werden ja aus den Vertexen und den entsprechenden Indexen generiert. Dazu fülle ich für ein entsprechendes Mesh die Vertex bzw. den Index Buffer!

    Nun, wenn ich nun jeder Vertex nur einmal vorkommt, und die Indices für jedes Polygon auch nur einmal vorkommt bzw. sortiert im Index buffer liegen, könnte ich mir den Intex buffer ja sparen, wenn quasie die reihenfolge der Vertexe im puffer die indices ersetzen.

    Kann ich ein mesh ohne index buffer erstellen? mit entsprechern Vertexdeklaration und Typ? da fibt doch sowas wie Vertex.strips under Vertex.Lists etc.??

    Wenn das gehen würde, würde die die renderung des meshes /Geomerty beschleunigen?

    Primär suche ich eine möglichkeit modelle zu komprimieren...

    grüße



  • BorisDieKlinge schrieb:

    Kann ich ein mesh ohne index buffer erstellen? mit entsprechern Vertexdeklaration und Typ? da fibt doch sowas wie Vertex.strips under Vertex.Lists etc.??

    Natürlich geht das. Gibt ja nicht ohne Grund Draw() und DrawIndexed().

    BorisDieKlinge schrieb:

    Wenn das gehen würde, würde die die renderung des meshes /Geomerty beschleunigen?

    Probier es aus. Aber es würde den Vorgang wohl eher verlangsamen. Bei einem Mesh ist ja jeder Vertex teil von meheren Dreiecken (im Mittel ~ 6), und ohne Indexbuffer hast du natürlich nicht die Vorteile von Vertex Caching.


  • Mod

    this->that schrieb:

    BorisDieKlinge schrieb:

    Wenn das gehen würde, würde die die renderung des meshes /Geomerty beschleunigen?

    Probier es aus. Aber es würde den Vorgang wohl eher verlangsamen. Bei einem Mesh ist ja jeder Vertex teil von meheren Dreiecken (im Mittel ~ 6), und ohne Indexbuffer hast du natürlich nicht die Vorteile von Vertex Caching.

    naja, sein fall scheint spezieller zu sein

    wenn ich nun jeder Vertex nur einmal vorkommt, und die Indices für jedes Polygon auch nur einmal vorkommt

    es koennte minimal schneller sein ohne indexbuffer.



  • Das muss aber ein sehr simples Mesh sein, wenn jeder Vertex nur einmal vorkommt. 😃


  • Mod

    this->that schrieb:

    Das muss aber ein sehr simples Mesh sein, wenn jeder Vertex nur einmal vorkommt. 😃

    das hat wohl eher keine relation zur komplexitaet.
    z.b. ein transparentes objekt richtig sortiert mittels bsp zu zeichnen resultiert in einem eher komplexen mesh, wird aber vermutlich auch keinen nutzen von einem indexbuffer haben.



  • Kann ich ein mesh ohne index buffer erstellen?
    Primär suche ich eine möglichkeit modelle zu komprimieren...

    In Hinblick auf Datenreduktion ist der Verzicht auf Indexing ziemlich unguenstig und ich bezweifle dass Deine Modelle so speziell sind dass kein Polygonpaar gemeinsame Vertices hat.

    da fibt doch sowas wie Vertex.strips

    Wenn Deine Daten so aufgebaut sind wie Du schreibst gibt es auch keine Strips.

    Wenn das gehen würde, würde die die renderung des meshes /Geomerty beschleunigen?

    Das Rendering wuerde eher durch einen sinnvollen Indexbuffer beschleunigt.



  • Danke Leute, für die Antworten. Ne ihr hab schon recht, es sind komplexere Meshes, und ja ein Vertex wird von mehren polygonen verwenden (denkfehler) . Ok gut dann bleibt der Indexbuffer sowie der Vertexbuffer mal erhalten.

    Ich speichere momentan meine Daten/Model/Scene in ein eigens Model ab, und serialisier es. Was momentan sehr groß ist. Nun dachte ich mir even die VErtex/Index daten eines Nodes zu komprimieren.

    Dann stieß ich auf "OpenCTM" Lib, welche aber nur Meshes und keien kanen Scenen strukturen komprimiert. Nun ja ih könnte ja jezter für jeden meiner Knoten das OpenCTM komprimierungsverfahren anwenden, aber vll. gibt bessere lösungen?

    Ich entwickle momentan in C#... und habe da nen 3ds Parser geschrieben. Welcher 3ds files in meine model umwandelt. Nun suche ich aber nach alternativen um model komprimiert abzulegen?

    Vorschläge?


Anmelden zum Antworten