7

可能重复:
C/C++,你能#include一个文件到一个字符串文字中吗?

是否可以在编译时使用 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"
  ;

但就像我说的那样,我真的不想修改着色器源文件,因为这会使相同文件的运行时加载复杂化,从而降低它们的可移植性。

4

0 回答 0