偶然看见,VSCode可以进行GLSL的调试。迅速查了些资料,着手尝试。也遇到了一些问题,写下来备查。
1、GLSL语法支持
2、GLSL显示支持
3、GLSL语法检查
这个比较复杂,不是直接安装插件就能用。
3.1代码补全的文件配置
https://github.com/KhronosGroup/glslang/releases
这里下载、解压后,填写文件(glslangValidator.exe的路径全名)路径到下图位置
3.2 setting.json配置
"glsl-linter.fileExtensions": {
".fs.glsl": "frag",
".fs": "frag",
".vs.glsl": "vert",
".vs": "vert",
".tes.glsl": "tese",
".tes": "tese",
".tcs.glsl": "tesc",
".tcs": "tesc",
".gs.glsl": "geom",
".gs": "geom",
}
3.3 glsl.json配置
https://gist.github.com/lewislepton/8b17f56baa7f1790a70284e7520f9623
填写内容到glsl.json里(文件->首选项->用户片段,搜索glsl.json)
4代码测试
4.1复制代码
从其中复制代码
4.2显示效果
ctrl+shift+p搜索Show glslCanvas
5、特别注意
尝试了几个例子后发现,一部分能显示,一部分不能显示。
5.1、报错的问题
GLSL Lint: Failed to spawn ‘glslangValidator’ binary. Error: spawn glslangValidator.exe ENOENT
按照网上的例子(设置里去搜索security.workspace.trust),并没有能解决。但是看起来也不影响,不显示不是因为这个
5.2、不显示效果,也无报错
尝试使用了几个例子后,发现有些能正常显示,有些不能。最开始一直以为是5.1的问题导致,多次尝试后发现也无影响。网上也找不到任何解释。
最终,终于发现问题所在:
glslsandbox的例子,变量用的是
uniform float time;
uniform vec2 mouse;
uniform vec2 resolution;
而VSCode的这些插件,必须是 u_。看过GLSL基础理论的都知道,这个是不同的习惯问题,有些人用u_ 有些人用 i_。 没想到VSCode的这些插件,只支持u_,但是不提示不报错,就是不显示。
就这个小问题,折腾了我一整天。记录一下,也方便自己以后查看。