6

我正在编写一个使用一些 WebGL 代码的简单 Javascript 库。我想在 .js 文件中包含内联着色器源,因为我的替代方法是将它们作为脚本标签包含在每个页面中,或者将它们作为单独的文件作为 AJAX 加载。这些选项都不是特别模块化。但是,由于 javascript 中缺少多行字符串,我对如何内联 WebGL 代码没有任何好的想法。有没有我没有想到的方法?

4

4 回答 4

3

每行使用一个字符串,然后将它们连接在一起,例如

var shader = [
   "// line1 ",
   "// line2 ",
].join('\n');

PS 之前这里讨论过一般问题,见Creating multiline strings in JavaScript

于 2012-06-19T19:22:20.803 回答
3

自 2009 年左右以来,JavaScript 在除 IE 之外的所有浏览器中都有多行字符串。

var shader = `
code
goes
here
`;
于 2018-03-18T01:45:59.167 回答
1

我最终破解了这个:http: //github.com/noteed/language-glsl/进入代码压缩器,通过替换 Language.GLSL.Pretty 中的所有vcat实例hsep。我得到了一个文件中的着色器代码的单行版本,然后我可以将其粘贴到一个字符串中。当我发布这个时,我希望找到一个类似的解决方案。

于 2012-06-20T16:44:25.200 回答
0

这是 NetBeans 处理这种情况的方式:

var shader = 
"firstLine\n\
secondLine\n\
thirdLine";

我发现这种编辑方式比为每一行创建一个数组项更有效。

于 2013-03-06T16:51:19.767 回答