2011-02-06 15 views
8

¿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.COLLADA Cargador en capas para OpenGL3.1 + Contexto

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

Yo do no todavía entiendo COLLADA. Estoy asumiendo que puede haber:

  • capa de Geometría capa
  • Shader
  • capa Texure

Incluso éstos no estoy seguro de, tal vez tenga que ser parte de un tipo diferente de esquema de estratificación

Nota al margen, lo más probable es que esté usando irrXML o este interesting XML library Acabo de leer acerca de here para leer los archivos a menos que se indique lo contrario.

Respuesta

15

¿Conoces Open Asset 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, también lleva años lograr que sea lo suficientemente estable para un uso productivo, principalmente porque el formato es terriblemente complejo (o, como el autor principal del cargador Collada de Assimp bromeando es: casi turing -completa) 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 tomarlo siempre que le atribuya la fuente).

Nota: Estoy afiliado con el proyecto y por lo tanto no imparcial. Pero después de las horribles experiencias que hemos hecho con la escritura de nuestro propio cargador Collada, me siento como tener que advertirle ...

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

Utilizamos también. Si realmente comienza desde cero, no lo haga. 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).

+0

¿Puede sugerir capas apropiadas para la interfaz del cargador OpenAsset con un motor de representación que admite la gama completa de características? He oído hablar de la biblioteca, pero siempre me preocupan los gastos generales que no conozco y las dificultades de subprocesamiento/transmisión múltiple. Si tiene alguna palabra sobre eso, lo agradecería. –

+0

En cuanto a la creación del árbol, esto es principalmente por lo que pensé que terminaría necesitando escribir mi propio cargador o al menos el traductor de otro cargador que ... parecía redundante. Voy a necesitar que los datos se empaqueten de manera específica de vez en cuando mientras lo cargo, principalmente para OpenCL. –

+0

No entiendo por "capa" lo que quieres decir.Assimp lee un archivo a la vez, reúne todo lo que entiende y lo convierte en una estructura de datos de salida unificada para que la persona que llama solo necesite procesar este formato (en memoria). –

Cuestiones relacionadas