Desde GLSL no dispone de una opción de incluir archivos que estoy tratando de agregar esto usando un analizador "#pragma incluir". (Quiero esto porque tengo algunos métodos genéricos que me gustaría implementar solo una vez pero que podría usar en muchos sombreadores diferentes, como el paso suave de Ken Perlin)OpenGL/GLSL - usando glShaderSource con múltiples fuentes para apoyar los archivos de inclusión
Analizar los archivos de sombreado para obtener los archivos incluidos funciona bien. Pero al configurar ShaderSource con los múltiples archivos de origen siempre encuentro problemas; dado que mi shader principal normalmente comienza con "#version 330" y la # version-line siempre tiene que ser la primera línea del shader, solo puedo agregar mi archivo principal como el primero en la matriz de cadenas pasadas a glShadersource, y luego que todos los archivos incluidos. Pero entonces mi archivo principal no se puede utilizar ningún funciones implementadas en esos archivos incluidos, ya que en esencia va a ser concatenados después de mi archivo principal, por lo que el compilador se queja de que no conoce las funciones de mi archivo principal está utilizando.
La única manera que puedo pensar para conseguir que funcione es leer el archivo principal, analizar la incluyen pragma, y luego reemplazar esa línea pragma con los archivos-contenido del archivo a ser incluido (aplicando de forma recursiva este mismo método para todos los archivos incluidos que podrían incluir otros archivos), pero eso significaría que los lienzos en los errores de compilación ya no coincidirían con los números reales del archivo principal.
¿Alguien ha configurado alguna clase de funcionalidad "incluir" para GLSL que funciona Y mantiene los números de lienzo? Y si es así, ¿cómo?
¡Usted, señor, es un genio! No tengo idea de por qué no pensé en eso, pero creo que este será el camino a seguir para mí. \ o/ – Pygmy