opengl后处理为啥需要两个framebuffer

为什么不直接一次在默认framebuffer里面画出这个贴图呢 【opengl后处理为啥需要两个framebuffer】 用来屏幕输出的那个表面,好像不能当成贴图来被访问吧?

■网友
你的意思是创建贴图的时候直接画到帧缓存?!下次再画的话,从帧缓存里找贴图的数据?!行不通。而且和双缓存也没关系啊。我确实没看懂题目,就当你说的是这个意思好了。举个再简单不过的例子。某张 1024x1024 的贴图贴到了一个三角形上,这个三角形用到了这个贴图的一半,即 (0.0, 0.0), (0.0, 1.0), (1.0, 1.0)。你问另一半啊,别的网格用呗。可惜这个三角形就占了几十个屏幕像素的大小。这就完了?贴图采样来的数据要计算光照哦!三角形可能背对屏幕,又做了背面剔除哦!三角形可能被另一个物体挡掉一半,只剩下个角哦,或者干脆不剩哦!最后帧缓存里有什么?可能只剩下几十个经过坐标变换,经过光照计算,经过深度缓存,剩下几十个扭曲的,无法还原到原始贴图里的像素。先把贴图采样着色的过程搞清楚啊!原始的贴图当然是独立存储的。帧缓存就只有绘制结果而已,为什么要在里面保存一张和绘制结果差了十万八千里的贴图?


    推荐阅读