是否可以在编译时使用 C++11 原始字符串文字将文本文件的全部内容作为字符串获取?
基本上,我希望能够嵌入 GLSL 着色器源文件而无需修改它们。
这里建议采用以下方法:
const std::string shaderSource = R"glsl(
#include "my_shader.glsl"
)glsl";
这很hacky,但对我的应用程序来说很好。但是,由于在文件包含之前评估原始字符串文字,这似乎不起作用。
我想我可以将'R"glsl('
and')glsl"'
部分移到每个着色器源文件的开头和结尾,然后这样做:
const std::string shaderSource =
#include "my_shader.glsl"
;
但就像我说的那样,我真的不想修改着色器源文件,因为这会使相同文件的运行时加载复杂化,从而降低它们的可移植性。