想象一下下面的例子:
let SHADER: &'static str = "
#version 140
attribute vec2 v_coord;
uniform sampler2D fbo_texture;
varying vec2 f_texcoord;
void main(void) {
gl_Position = vec4(v_coord, 0.0, 1.0);
f_texcoord = (v_coord + 1.0) / 2.0;
}";
fn main() {
// compile and use SHADER
}
当然,您可以如上图所示内联编写着色器,但在使用外部软件设计着色器或使用多个着色器时,这会变得非常复杂.您也可以从外部文件加载数据,但有时您只想提供一个小的可执行文件,而不需要知道资源存储在哪里.
如果该解决方案也适用于二进制文件(例如图标、字体),那就太好了.
我知道可以编写rustc插件,据我所知,应该可以提供这样的功能,但编写我自己的插件相当复杂,我想知道是否已经有一个好的plugin/lib/标准方式来包含资源文件.另一点是,它应该在不使用手动链接器+指针方式的情况下工作.