然後OS再將資訊交給Window System顯示在螢?zāi)簧?/div>
那麼,現(xiàn)在我們關(guān)心的事,F(xiàn)rame Buffer是甚麼
Frame Buffer包含所有要顯示在輸出裝置上的資訊,
意即大量的格子,而每一格如何顯示又主要由以下三種Buffer提供的資訊所組成
Color Buffer:
也就是儲存顏色的空間,通常又分成RGB(紅綠藍(lán))三個(gè)通道,
他可以決定該點(diǎn)的顏色(RGB可以混合出絕大多數(shù)人類可見的顏色)
Color Buffer的值常使用Unsigned char或是Float紀(jì)錄
舉例來說,使用Unsigned char(8 bit),那麼(255, 0, 0)就是鮮豔的紅色
值得一提的是常常也會使用4通道RGBA,也就是增加一個(gè)「透明」的通道
A表示alpha,表示透明程度
Depth Buffer:
紀(jì)錄該格的深度。所謂的深度是用來紀(jì)錄深淺,因?yàn)樵谝粋€(gè)三維空間中
經(jīng)過轉(zhuǎn)換可能會有兩點(diǎn)重疊,而通常我們傾向於顯示距離相對近的點(diǎn)
如上圖,我們應(yīng)該顯示黃色的格子,而非桃紅色的格子
那麼Depth Buffer中的值該如何紀(jì)錄呢?
這就留到以後再說吧,目前只要知道用處即可
這邊補(bǔ)充一點(diǎn),這種演算法稱為hidden-surface-removal algorithm
使用z-buffer(也就是這邊的depth buffer)來判斷前後位置
在OpenGL中是可以決定是否使用的
例如在繪製透明的東西時(shí),通常會將其關(guān)閉
並使用GL_BLEND...
這些以後再說吧~
Stencil Buffer:
可以決定該格需不需要被繪製
如上圖,在Stencil Buffer中被設(shè)為1的才會被繪製,儘管其他格確實(shí)是有東西的
大Guy以上三種最為重要,他們決定了真正顯示到螢?zāi)坏臉幼樱?/div>
每一個(gè)都有屬於他們的Buffer,全部加起來就像是一面面的Buffer組成的二維陣列
而這些統(tǒng)稱為Frame Buffer,將其資訊Pack至主記憶體。
小總結(jié):
目前我們知道一個(gè)點(diǎn)被設(shè)定(可以推廣至一個(gè)面),然後經(jīng)過GPU一系列的運(yùn)算,
將結(jié)果紀(jì)錄至Frame Buffer,並將資訊Pack至記憶體,
那麼,現(xiàn)在我們要將畫面顯示在螢?zāi)粫r(shí),
我們通常都是在「視窗」(Window)中顯示的,
因此,我們需要讓W(xué)indow system讀取主記憶體的相關(guān)資訊
那麼該怎麼做呢?
其實(shí)細(xì)部不需要自己寫,別人都寫好函式了,我們只需呼叫
但會依據(jù)使用的函式不同而產(chǎn)生不同的視窗
下一篇會實(shí)際使用glut來顯示!
引用網(wǎng)址:http://www.jamesdambrosio.com/TrackBack.php?sn=3862576
All rights reserved. 版權(quán)所有,保留一切權(quán)利