c++ opengl 3d collada

c++ - COLLADA Loader en capas para OpenGL3.1+Contexto



3d (1)

¿Qué capas ayudarían a implementar esto de manera eficiente? Preferiblemente de modo que pueda obtener estos tres componentes enumerados a continuación con las primeras capas y codificar el resto a medida que avance.

Estoy escribiendo una biblioteca de carga COLLADA para usar con mi motor de gráficos. Así que, por supuesto, tan pronto como comencé me doy cuenta de que parece ser una tarea bastante grande. Ahora tengo la intención de escribir la biblioteca para usar diferentes capas.

Todavía no entiendo COLLADA. Estoy asumiendo que puede haber:

  • Capa de geometría
  • Capa de sombreado
  • Capa de Texure

Incluso de estos no estoy seguro, pueden necesitar ser parte de un tipo diferente de esquema de estratificación.

Nota al margen , lo más probable es que esté usando irrXML o esta interesante biblioteca XML que acabo de leer aquí para leer los archivos a menos que se indique lo contrario.


¿Conoce la Open Importación Import Library ( http://assimp.sourceforge.net/ )? Tiene un soporte bastante decente para la carga de Collada y el uso de objetivos en motores de gráficos. Escribir un cargador de collada por su cuenta no solo es difícil, sino que también demora años para que sea lo suficientemente estable para un uso productivo, sobre todo porque el formato es terriblemente complejo (o, como bromeó el autor principal del cargador de Collada de Assimp: casi turing). completo ) y cada exportador tiene sus propios hábitos extraños.

Si necesita funciones adicionales, puede basar su trabajo en el cargador Collada de Assimp y agregar solo lo que necesita (licencia BSD, puede tomarla siempre que le atribuya la fuente).

Nota: estoy afiliado con el proyecto y, por lo tanto, no soy imparcial. Pero después de las experiencias horribles que hicimos al escribir nuestro propio cargador Collada, tengo ganas de advertirte ...

Nota al margen, lo más probable es que esté usando irrXML

Lo usamos también Si realmente comienzas desde cero, no lo hagas . Use un analizador DOM, como TinyXML. Collada es complejo pero está muy bien definido, un analizador de SAX simplemente endurece el trabajo ya que usted tiene que construir el árbol de documentos por su cuenta (y * necesitará ** una estructura de datos para parecerse al documento completo - los elementos de Collada están altamente interconectados. Para leer algo significativo de ellos, se deben resolver varias referencias cruzadas).