【发布时间】:2018-10-18 16:07:45
【问题描述】:
我正在开发一个需要自定义 .glsl 着色器的 WebGL 项目。该项目将应用程序与 Gulp 捆绑在一起,因此我尝试使用 https://github.com/mikecao/gulp-glsl,这是一个“将 GLSL 代码转换为缩小字符串的 Gulp 插件”。完美!
我跑了npm install gulp-glsl --save-dev,我的gulpfile.js看起来如下:
const gulp = require('gulp');
const glsl = require('gulp-glsl');
gulp.src('**/GLSL/*.glsl')
.pipe(glsl({format: 'raw'}))
.pipe(gulp.dest('build'));
然后我尝试像这样导入我的着色器:
import fragShader from "./GLSL/frag.glsl";
但是 Gulp 编译器给了我一个编译错误:
[13:27:17] gulp-notify: [Compile Error]
/Users/.../WebGL/GLSL/polyFrag.glsl:1
#extension GL_OES_standard_derivatives : enable
^
ParseError: Unexpected character '#'
我不需要 Gulp 来编译 .glsl 文件,我只需要它把它变成一个字符串以供 WebGL 使用。我可以用 Gulp 做些什么来实现这一点?
【问题讨论】:
-
“把它变成一个字符串”,你的意思是“缩小”glsl结果吗?
-
@DacreDenny 问题是 Gulp 将
#extension GL_OES视为 JavaScript,它不理解。我需要将.glsl文件转换为字符串,因此它相当于var fragShader = "#extension GL_OES : enable"。 Webpack 和 Rollup 可以轻松处理这个问题,但我似乎无法使用 Gulp。
标签: javascript npm gulp glsl webgl