Pregunta

Esta es una pregunta bastante para principiantes, pero dado que tengo una forma compleja en OpenGL que requiere muchos cálculos, ¿hay de alguna manera exportarlo a un estado como un modelo que se puede abrir nuevamente más tarde, dado que no lo editará nuevamente?

No puedo crearlos fuera del programa (con algo como Blender) ya que la forma se calcula cuando comienza el programa. Luego, el render se traduce, gira, dibuja, etc. Tenga en cuenta que no necesito editar la forma, pero sí lo quiero en un estado 3D, por lo que guardar una imagen no es una opción.

Estoy usando Opentk 1.0, vb.net (.net 4)

¿Fue útil?

Solución

La posibilidad obvia sería escribir sus vértices en un archivo y luego volver a cargarlos cuando sea necesario. A menos que tenga razones específicas para hacer lo contrario, probablemente sea mejor usar uno de los muchos formatos de archivo existentes para esto, como OBJ de frente de onda, Ogre3d Mesh XML archivos, etc..

Otros consejos

Esto suena como una situación ideal para las listas de visualización de OpenGL. La forma en que los usa es pedirle a OpenGL una ID de lista de visualización para usar:

GLuint draw_id = glGenLists(1);

(Puede solicitar varias identificaciones consecutivas a la vez, pero en este caso solo estamos pidiendo 1) Luego, por primera vez a través de su rutina de sorteo, llame a GlnewList:

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

Tenga en cuenta que esto en realidad no renderizará su forma (puede usar GL_COMPILE_AND_EXECUTE en GLNewList, que voluntad Renderiza tu forma, pero eso generalmente se desanima)

Ahora, siempre que necesite dibujar su objeto:

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

Y finalmente, cuando haya terminado con él, puede usar GlDelelists.

Las listas de visualización en realidad pueden acelerar la representación, ya que se pueden hacer algunas optimizaciones, y se elimina toda la sobrecarga de llamadas de función.

Ahora, técnicamente, las listas de visualización de OpenGL se han desactivado (¡sin embargo, no se han eliminado!) En OpenGL 3.0 y superior (junto con Gltranslate, Glvertex Glbegin ... GRRR), pero aún deberían funcionar en el futuro previsible. Para ser una prueba futura, debe usar matrices de vértices, pero eso es un poco más complicado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top