rgba模式中,每乙個畫素會儲存以下資料:r值(紅色分量)、g值(綠色分量)、b值(藍色分量)和a值(alpha分量)。其中紅、綠、藍三種顏色相組合,就可以得到我們所需要的各種顏色,而alpha不直接影響顏色,它將留待以後介紹。
在rgba模式下選擇顏色是十分簡單的事情,只需要乙個函式就可以搞定。
glcolor*系列函式可以用於設定顏色,其中三個引數的版本可以指定r、g、b的值,而a值採用預設;四個引數的版本可以分別指定r、g、b、a的值。例如:
void glcolor3f(glfloat red, glfloat green, glfloat blue);
void glcolor4f(glfloat red, glfloat green, glfloat blue, glfloat alpha);
(還記得嗎?3f表示有三個浮點引數~請看第二課中關於glvertex*函式的敘述。)
將浮點數作為引數,其中0.0表示不使用該種顏色,而1.0表示將該種顏色用到最多。例如:
glcolor3f(1.0f, 0.0f, 0.0f); 表示不使用綠、藍色,而將紅色使用最多,於是得到最純淨的紅色。
glcolor3f(0.0f, 1.0f, 1.0f); 表示使用綠、藍色到最多,而不使用紅色。混合的效果就是淺藍色。
glcolor3f(0.5f, 0.5f, 0.5f); 表示各種顏色使用一半,效果為灰色。
注意:浮點數可以精確到小數點後若干位,這並不表示計算機就可以顯示如此多種顏色。實際上,計算機可以顯示的顏色種數將由硬體決定。如果opengl找不到精確的顏色,會進行類似「四捨五入」的處理。
大家可以通過改變下面**中glcolor3f的引數值,繪製不同顏色的矩形。
void mydisplay(void)
注意:glcolor系列函式,在引數型別不同時,表示「最大」顏色的值也不同。
採用f和d做字尾的函式,以1.0表示最大的使用。
採用b做字尾的函式,以127表示最大的使用。
採用ub做字尾的函式,以255表示最大的使用。
採用s做字尾的函式,以32767表示最大的使用。
採用us做字尾的函式,以65535表示最大的使用。
這些規則看似麻煩,但熟悉後實際使用中不會有什麼障礙。
關於RGBA顏色值
rgba的意思是 red green blue alpha 它是在rgb上擴充套件包括了 alpha 通道,執行對顏色值設定透明度。在rgba中,四個數字以逗號分隔開,前面三個數字標識這個顏色的rgb值,這個設定和rgb並沒有任何區別,rgba也可以設定為百分比,後面的數字代表透明度,範圍在0 1之...
OpenGL學習 顏色的選擇
opengl支援兩種顏色模式 一種是rgba,一種是顏色索引模式。無論哪種顏色模式,計算機都必須為每乙個畫素儲存一些資料。不同的是,rgba模式中,資料直接就代表了顏色 而顏色索引模式中,資料代表的是乙個索引,要得到真正的顏色,還必須去查索引表。1.rgba顏色 rgba模式中,每乙個畫素會儲存以下...
OpenGL學習筆記 顏色
opengl支援兩種顏色模式 一種是rgba,一種是顏色索引模式。無論哪種顏色模式,計算機都必須為每乙個畫素儲存一些資料。不同的是,rgba模式中,資料直接就代表了顏色 而顏色索引模式中,資料代表的是乙個索引,要得到真正的顏色,還必須去查索引表。pc程式開發中,使用索引顏色已經不是主流。一些小型裝置...