Pregunta

Estoy escribiendo un pequeño programa de gráficos usando DirectX9 que importa algunos archivos de modelos creados usando batidora de archivos .x. Hasta aquí todo bien.

Los modelos tienen materiales que tienen texturas y es fácil de obtener los nombres de textura y adecuadamente hacer que los objetos sin embargo, me gustaría utilizar diferentes efectos (shader) archivos en algunos de los materiales, pero no puedo encontrar ninguna manera de incrustar la información acerca de lo sombreado para su uso en el modelo en el archivo .x.

La mejor idea que tenía era para mirar el nombre del archivo de textura en mi solicitud D3D9 y codificar una tabla de búsqueda de nombre de archivo de textura a efecto. Pero eso no parece elegante, y también significa que que iba a terminar de copiar y cambiar el nombre de texturas sólo para poder utilizar la misma textura con diferentes shaders.

Me siento Debo estar perdiendo una manera más fácil de hacer esto, alguna sugerencia?

¿Fue útil?

Solución

A diferencia de los archivos de imagen de la textura, la especificación de un programa de sombreado puede ser muy complicado. Es necesario el texto de sombreado, así como las especificaciones de los parámetros que necesita y una forma para que cualquiera que lea el archivo para saber qué valores para los parámetros y cómo. Algunos shaders requieren a su vez unas texturas parámetros y, a veces estos texutres tiene que ser generado por la aplicación (por ejemplo, en el caso de un ruido Perlin textura 3D).
En resumen, no hay forma de llegar a una forma estándar para especificar shaders de forma genérica que puede ser totalmente integreted en un formato de archivo como .x. Su única opción es llegar a algo ad hoc para su aplicación. El método que usted sugiere en la pregunta es tan bueno como cualquier otro.

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