我的立方球地球项目直通几何着色器无法运行,该如何解决?
问题排查&解决方法
- 首先确认Shader构造函数的传参顺序是否正确
你使用的LearnOpenGL内置Shader类,包含几何着色器的三参数重载顺序为顶点着色器路径、片段着色器路径、几何着色器路径,如果将几何着色器和片段着色器的参数顺序写反,就会出现渲染异常。正确写法示例:Shader earthShader("顶点着色器文件路径", "片段着色器文件路径", "几何着色器文件路径"); - 检查几何着色器的编译、着色器程序的链接状态
建议在Shader类的编译、链接逻辑中添加日志打印代码,确认几何着色器没有语法错误、三个着色器链接过程没有变量不匹配之类的报错。 - 确认几何着色器的代码细节正确
你贴出的代码中循环条件的<被转义为了<,确认你本地实际运行的几何着色器代码中循环条件写的是i < gl_in.length(),不是转义后的字符。 - 快速定位问题链路
你可以临时修改片段着色器,直接输出固定颜色:
如果运行后可以看到红色的立方球,说明问题出在纹理坐标的传递链路;如果还是全黑,说明问题出在顶点位置传递、或者着色器本身编译/链接失败。void main() { fragmentColor = vec4(1.0, 0.0, 0.0, 1.0); }
内容的提问来源于stack exchange,提问作者Leon Jovanovic
相关产品推荐
相关产品推荐

