OpenGL編程指南第四章:顏色

來源:互聯網
上載者:User

電腦螢幕一個像素的顏色值由RGB(或RGBA,A並不直接用於顏色顯示)三個分量組成;不同裝置單個像素能顯示的顏色數不用,儲存顏色值的記憶體大小也不用,一般用bit來衡量,8-bit buffer能顯示256種顏色。RGB各分量的值可以無歧義地用浮點數表示,範圍是[0.0,1.0],1.0表示這個分量的顏色達到最強。

圖元顏色

opengl設定顏色的api是glColor*,顏色設定以頂點為單位,圖元的顏色進過流水線的處理才能到達螢幕:
1)頂點的顏色還要經過光照處理;
2)此時以圖元頂點的顏色為基礎,按選定的著色模式(shading model)對圖元進行著色,得出圖元內部的顏色;
3)接下來就是光柵化(rasterize,也即將圖元轉化成二維映像),這一步決定映像視窗座標內的每個格子顏色、深度(z)、紋理座標,這樣的格子就是片段(fragment),紋理、霧、antialiasing這些效果也會被加諸片段之上;
5)最終片段的顏色和frame buffer中原有的像素顏色進行混合操作(alpha blending,dithering,bitwise logical operation),形成新的像素顏色。

RGB顏色儲存格式
顯示裝置一般為每個分量分配一定的bit數(不一定相等),分量值儲存為無符號整形;比如R有8 bit,那麼儲存的值為0,1...255,那麼分別對應於浮點值0.0,1/255...1.0。

Dithering
一些現實裝置使用Dithering技術來增加可以顯示的顏色數目,打個比方,RGB分別只有一個bit寬度,那麼只可以顯示:black,white,red,blue,green,yellow,cyan,magenta這幾種顏色,為了顯示一塊pink地區,可以在該地區內間隔顯示red和white像素,這樣看起來就感覺是pink了。

Color-Index模式
該模式使用一張顏色尋找表和色彩索引來表示顏色,像素中儲存的是索引值。

Shading Mode
有兩種著色模式,flat和smooth,前者會使用某個頂點的顏色來個整個圖元著色,後者會考慮所有頂點的顏色對圖元內部的點進行著色(插值)。在flat模式下,選取那個頂點的顏色取決於圖元類型,請參考原書。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.