我的问题与使用相同数据的多个着色器文件有关。
我知道你可以在directX中使用openGL吗?
例如
vertexShader1可能需要知道我的cameraViewProjection vertexShader2可能还需要
soooo有一种方法可以
“#include”共享变量文件?
如果我想制作另一个名为“ShaderedVariables”的文件,我可以把我的 像cameraView或ViewProjection那样的世界信息我一直在寻找,但我仍然不知道这是否可能。
答案 0 :(得分:3)
OpenGL不知道如何使用文件系统。它不知道是文件系统。所以它无法读取文件。
您可以尝试ARB_shading_language_include(这也不会读取文件;它会让您在内存中构建文件系统)。但是现在,似乎只有NVIDIA支持它,所以它并不是最便携的解决方案。
一般来说,如果定义很少且很少,你只需将相同的内容放入每个着色器文件中:
// Shader1:
uniform mat4 cameraMatrix;
void main() {...}
// Shader2:
uniform mat4 cameraMatrix;
void main() {...}
如果您的定义更为实质,您可以随时构建自己的包含系统。请注意,glShaderSource
需要多个字符串,而不只是一个。因此,您可以使用常用定义简单地为主要着色器字符串添加前缀,并让每个实际着色器选择实际使用的着色器。