Frage

Dies ist eine ziemlich Anfängerfrage, aber angesichts der Tatsache, dass ich eine komplexe Form in OpenGL rendere, die viele Berechnungen erfordert, gibt es trotzdem, um dies in einen Zustand wie ein Modell zu exportieren, das später erneut geöffnet werden kann, wenn Sie sie nicht wieder bearbeiten?

Ich kann sie nicht außerhalb des Programms (mit so etwas wie Mixer) erstellen, da die Form beim Start des Programms berechnet wird. Das Render wird dann übersetzt, gedreht, gezeichnet usw. Beachten, dass ich die Form nicht bearbeiten muss, aber ich möchte sie in einem 3D -Zustand, sodass das Speichern eines Bildes keine Option ist.

Ich verwende Openentk 1.0, vb.net (.net 4)

War es hilfreich?

Lösung

Die offensichtliche Möglichkeit wäre, Ihre Eckpunkte in eine Datei zu schreiben und sie dann bei Bedarf erneut zu laden. Wenn Sie nicht spezifische Gründe haben, etwas anderes zu tun, ist es wahrscheinlich am besten, eines der vielen vorhandenen Dateiformate dafür zu verwenden, wie z. Wellenfront obj, Ogre3d Mesh XML Dateien, etc.

Andere Tipps

Dies klingt nach einer idealen Situation für OpenGL -Anzeigelisten. Die Art und Weise, wie Sie sie verwenden, dient zuerst OpenGL nach einer Anzeige -List -ID zur Verwendung:

GLuint draw_id = glGenLists(1);

(Sie können nach mehreren aufeinanderfolgenden IDs gleichzeitig verlangen, aber in diesem Fall fragen wir nur 1.

glNewList(draw_id, GL_COMPILE);
<do compute intensive drawing here>
glEndList();

Beachten Sie, dass dies Ihre Form nicht tatsächlich rendert (Sie können GL_COMPILE_AND_EXECUTE in GlNewList verwenden, die Wille Rendern Sie Ihre Form, aber das ist im Allgemeinen entmutigt)

Jetzt, wann immer Sie Ihr Objekt zeichnen müssen:

< set up your OpenGL matrices >
glCallList(draw_id);

Und schließlich, wenn Sie damit fertig sind, können Sie Gldeletelisten verwenden.

Anzeigenlisten können das Rendering tatsächlich beschleunigen, da einige Optimierungen durchgeführt werden können und der gesamte Funktionsaufruf -Overhead entfernt wird.

In technisch gesehen wurden OpenGL -Anzeigelisten in OpenGL 3.0 und oben veraltet (jedoch nicht entfernt!). Um zukünftige Beweise zu sein, sollten Sie Vertex -Arrays verwenden, aber das ist ein bisschen komplizierter.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top