Question

Il s'agit d'une question assez débutante, mais étant donné que je rende une forme complexe dans OpenGL qui nécessite beaucoup de calculs, il y a de toute façon pour exporter cela vers un état comme un modèle qui peut être ouvert plus tard, étant donné que vous ne le modifierez à nouveau?

Je ne peux pas les créer en dehors du programme (avec quelque chose comme Blender) car la forme est calculée lorsque le programme commence. Le rendu est ensuite traduit, tourné, dessiné, etc. Notez que je n'ai pas besoin de modifier la forme, mais je le veux dans un état 3D, donc enregistrer une image n'est pas une option.

J'utilise OpenTK 1.0, VB.NET (.NET 4)

Était-ce utile?

La solution

La possibilité évidente serait d'écrire vos sommets dans un fichier, puis de les recharger en cas de besoin. Sauf si vous avez des raisons spécifiques à faire autrement, il est probablement préférable d'utiliser l'un des nombreux formats de fichiers existants pour cela, comme OBJ du front d'onde, Ogre3d XML des dossiers, etc.

Autres conseils

Cela ressemble à une situation idéale pour les listes d'affichage OpenGL. La façon dont vous les utilisez est de demander d'abord à utiliser un ID de liste d'affichage:

GLuint draw_id = glGenLists(1);

(Vous pouvez demander plusieurs identifiants consécutifs à la fois, mais dans ce cas, nous ne demandons que 1) Ensuite, la première fois grâce à votre routine de tirage, appelez GLNEWLIST:

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

Notez que cela ne rendra pas réellement votre forme (vous pouvez utiliser GL_COMPILE_AND_EXECUTE dans GLNEWLIST, qui sera Rendez votre forme, mais cela est généralement découragé)

Maintenant, chaque fois que vous avez besoin de dessiner votre objet:

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

Et enfin, lorsque vous en avez terminé, vous pouvez utiliser des gldeletelistes.

Les listes d'affichage peuvent réellement accélérer le rendu, car certaines optimisations peuvent être effectuées, et toutes les frais généraux d'appel de fonction sont supprimés.

Désormais, techniquement, les listes d'affichage OpenGL ont été obsolètes (non supprimées, cependant!) Dans OpenGL 3.0 et plus (avec GlTranslate, Glvertex Glbegin ... GRRR), mais ils devraient toujours fonctionner dans un avenir prévisible. Pour être une preuve future, vous devez utiliser des tableaux de sommets, mais c'est un peu plus compliqué.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top