跳到內容

OpenGL 程式設計/基礎/顏色

來自華夏公益教科書,開放的書籍,開放的世界

使用顯示器的 RGB 定義單一顏色

[編輯 | 編輯原始碼]

在計算機圖形學中,有很多方法可以指定顏色,但最簡單和最廣泛使用的方法之一是 RGB 顏色模型。RGB 代表紅色、綠色和藍色:加色三原色。每種顏色都被賦予一個值,在 OpenGL 中通常是 0 到 1 之間的值。1 表示儘可能多的該顏色,0 表示沒有該顏色。我們可以將這三種顏色混合在一起,以獲得完整的顏色範圍,如左側所示。

例如,純紅色表示為 (1, 0, 0),純藍色表示為 (0, 0, 1)。白色是三種顏色的混合,表示為 (1, 1, 1),而黑色是三種顏色的缺失,表示為 (0, 0, 0)。黃色是紅色和綠色的混合,如 (1, 1, 0)。橙色是黃色中帶有一些綠色,表示為 (1, 0.5, 0)。

有關 RGB 的更多資訊,請參閱 維基百科條目.

使用 glColor3f

[編輯 | 編輯原始碼]

glColor3f() 接受 3 個引數:你想要的顏色的紅色、綠色和藍色分量。在使用 glColor3f 之後,你繪製的所有內容都將以該顏色顯示。例如,考慮以下顯示函式

void display() {
       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
       glColor3f(0.5f, 0.0f, 1.0f); // (0.5, 0, 1) is half red and full blue, giving dark purple.
       glBegin(GL_QUADS);
               glVertex2f(-0.75, 0.75);
               glVertex2f(-0.75, -0.75);
               glVertex2f(0.75, -0.75);
               glVertex2f(0.75, 0.75);
       glEnd();
       glutSwapBuffers();
}

這將輸出一個令人愉快的紫色矩形/四邊形。

嘗試使用 glColor3f(),傳入不同的引數。看看你能否建立深綠色、淺灰色或青色。

為單個頂點設定不同的顏色

[編輯 | 編輯原始碼]
此程式的輸出。

glColor3f 可以呼叫在 glBegin 和 glEnd 之間。當以這種方式使用時,它可以用於為每個頂點設定自己的顏色。生成的矩形將被以令人愉快的顏色漸變著色,如右側所示。

void display() {
       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
       glBegin(GL_QUADS);
               glColor3f(0.5f, 0.0f, 1.0f); // make this vertex purple
               glVertex2f(-0.75, 0.75);
               glColor3f(1.0f, 0.0f, 0.0f); // make this vertex red
               glVertex2f(-0.75, -0.75);
               glColor3f(0.0f, 1.0f, 0.0f); // make this vertex green
               glVertex2f(0.75, -0.75);
               glColor3f(1.0f, 1.0f, 0.0f); // make this vertex yellow
               glVertex2f(0.75, 0.75);
       glEnd();
       glutSwapBuffers();
}
華夏公益教科書