VS
顶点变换相关的,可以通过cpu对单个顶点进行模拟计算。例如下面代码片段在vs中获取屏幕的像素坐标。
vec4 norm_coord = projection*(view*(model*vec4(vertex,1.0)));
vec2 screen_pos = norm_coord.xy / norm_coord.w;
screen_pos.x = (screen_pos.x + 1.0) * viewport[2] / 2. + viewport[0];
screen_pos.y = (screen_pos.y + 1.0) * viewport[3] / 2. + viewport[1];
找一个矩形库,如glm,然后可以验证。
FS
fs中是片源了,包括从vs中传过来且经过插值后的varying变量。。想要调试查看处理过程中的值,目前见到的办法只有一个通过gl_FragColor以颜色输出,我自己一直这么做的。。
gl_FragColor的rgba都必须是0-1.0之间的。需要转化到这个区间内,输出到屏幕后。然后打开QQ,Ctrl+Alt+A可以拾取像素的RGBA值了。也可以在PS中打开放大以后去看。。
最近看到网上一哥们也有一个类似的分享:visual GLSL debuging 。他更进一步,FS中通过squeezeZeroOne函数把向量压缩到0-1之间,然后在cpu端又增加了鼠标拾取framebuffer中的像素值,然后将像素值解压还原回FS中原始向量值。。