我正在用OpenGL 4.6编写渲染系统,并使用NVIDIA的NSight对其进行调试。调试我的光照,法线贴图/纹理等问题一直令人沮丧。我通常的解决方案是临时添加一个FragColor = (whatever value I want to debug)
,然后使着色器过早返回,这既费时又需要重新创建。 -发射。但是:
我注意到NSight在每次绘制调用之后都会存储最终渲染的“修订”,我相信能够在着色器中保存我自己的“修订”状态会很方便。
有这种机制吗?例如:
// <Some GLSL stuff goes here e.g. light calculations>
// Save an intermediate preview with lighting and no textures, for debugging
FragColor = vec4(lightValue, 1.0);
saveIntermediateRevisionState(FragColor);
// <More GLSL stuff before we set the real, final FragColor>