Cesium原理篇:6 Render模塊(4: FBO)
Cesium不僅僅提供了FBO,也就是Framebuffer類,而且整個渲染過程都是在FBO中進行的。FBO,中文就是幀緩沖區(qū),通常都屬于高級用法,但其實,如果你了解了它的基本原理后,用起來還是很簡單的,關(guān)鍵在于理解。比如你蓋樓,地基沒打好,蓋第一層樓,還可以,蓋第二層樓,有點挫了,蓋第三層樓,塌了。你會認為第三層樓(FBO)太難了,其實根本原因還是出在地基上。
窗口系統(tǒng)所管理的幀緩存有自己的緩存對象(顏色,深度和模板),它們誕生于窗口創(chuàng)建前,而我們自己創(chuàng)建的幀緩沖,這些緩存對象則需要自己來手動創(chuàng)建。還是默認大家了解FBO的概念和WebGL中使用的方式,在這個基礎(chǔ)上我們來看一下Cesium中對FBO的封裝。首先看一下FBO中的主要屬性:
function Framebuffer(options) { var gl = options.context._gl; var maximumColorAttachments = ContextLimits.maximumColorAttachments; this._gl = gl; this._framebuffer = gl.createFramebuffer(); this._colorTextures = []; this._colorRenderbuffers = []; this._activeColorAttachments = []; this._depthTexture = undefined;