Windows下使用shaderc编译BGFX着色器报错及makefile无效问题
BGFX着色器编译报错解决方案
报错核心原因
你遇到的a_position undeclared、v_color0 undeclared类错误,本质是调用shaderc编译时没有显式指定varying.def.sc文件路径。shaderc不会默认读取当前目录下的varying定义文件,你写在varying.def.sc里的顶点输入、varying输出声明没有被加载到预处理流程,$input、$output宏无法正确展开,最终导致编译器识别不到对应标识符。
另外你贴的原始编译命令末尾的包含路径引号存在配对错误,也会导致路径解析异常。
修复方法
1. 修正命令行编译参数
在原有编译命令中添加--varyingdef参数,显式指定varying定义文件路径,同时修正所有引号为英文半角成对格式,修正后的Windows命令如下:
"../../bgfx/.build/win64_vs2017/bin/shadercDebug.exe" -f v_simple.sc -o v_simple.bin --platform windows --type vertex --verbose -i "../../bgfx/src" --varyingdef "./varying.def.sc"
额外提示:如果后续编译片段着色器,需要把
--type参数改为fragment,同时保持--varyingdef指向同一个varying.def.sc文件,避免出现顶点/片段着色器接口不匹配的链接错误。
2. 修复makefile编译无产物问题
bgfx官方提供的shader.mk脚本默认只会识别符合命名规则的着色器文件:
- 顶点着色器必须以
vs_为前缀命名,例如vs_simple.sc - 片段着色器必须以
fs_为前缀命名,例如fs_simple.sc
你当前的顶点着色器命名为v_simple.sc,不符合脚本的扫描规则,所以不会被编译,自然输出空目录。将文件名按规则修改后,再传入对应TARGET参数执行make即可正常生成编译产物。同时执行make时要保证工作目录为makefile、着色器源码、varying.def.sc所在的目录。
内容的提问来源于stack exchange,提问作者Seppukki
相关产品推荐
相关产品推荐

