opengl中的RGBA顏色
阿新 • • 發佈:2019-02-08
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)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0f, 1.0f, 1.0f);
glRectf(-0.5f, -0.5f, 0.5f, 0.5f);
glFlush();
}
注意:glColor系列函式,在引數型別不同時,表示“最大”顏色的值也不同。
採用f和d做字尾的函式,以1.0表示最大的使用。
採用b做字尾的函式,以127表示最大的使用。
採用ub做字尾的函式,以255表示最大的使用。
採用s做字尾的函式,以32767表示最大的使用。
採用us做字尾的函式,以65535表示最大的使用。
這些規則看似麻煩,但熟悉後實際使用中不會有什麼障礙。
在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)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0f, 1.0f, 1.0f);
glRectf(-0.5f, -0.5f, 0.5f, 0.5f);
glFlush();
}
注意:glColor系列函式,在引數型別不同時,表示“最大”顏色的值也不同。
採用f和d做字尾的函式,以1.0表示最大的使用。
採用b做字尾的函式,以127表示最大的使用。
採用ub做字尾的函式,以255表示最大的使用。
採用s做字尾的函式,以32767表示最大的使用。
採用us做字尾的函式,以65535表示最大的使用。
這些規則看似麻煩,但熟悉後實際使用中不會有什麼障礙。