我不想使用#include
宏在glsl中包含着色器文件,我听说有ARB_shading_language_include
extension支持#include
宏。有没有人可以给我一个代码片段来展示如何使用#include
宏?
答案 0 :(得分:41)
您需要了解的关于shading_language_include的第一件事是不是。它不是来自磁盘的#include
文件。" OpenGL不知道文件是什么;它没有文件系统的概念。
相反,您必须预加载您可能想要包含的所有文件。所以你有一个着色器字符串和一个从中加载字符串的文件名。实质上,您必须在OpenGL中构建虚拟文件系统。
您使用glNamedStringARB
将字符串上传到虚拟文件系统。字符串的名称是其完整路径名。
一旦构建了虚拟文件系统,就必须为编译的每个着色器初始化扩展。
#version MY_OPENGL_VERSION //Whatever version you're using.
#extension GL_ARB_shading_language_include : require
在#extension
语句后,您可以根据需要#include
。
答案 1 :(得分:5)
我想回答0xbadf00d的问题,但缺乏声誉。
来自ARB/shading_language_include.txt:
“<type>
必须为SHADER_INCLUDE_ARB
”