文章目錄
- 一、前置知識
- 二、運作效果
- 三、具體代碼
一、前置知識
OPenGL中上色分為:單調着色、平滑着色
- 單調着色:給四邊形圖上固定的一種顔色;
- 平滑着色:給三角形的三個頂點的不同顔色混合在一起,建立漂亮的色彩混合;
使用
glColor3f(r, g, b)
來設定目前畫筆顔色
二、運作效果
三、具體代碼
完整代碼可參考:OPenGL筆記–建立一個OPenGL視窗
void GL_Test::paintGL()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //清除螢幕和深度緩存
glLoadIdentity(); //重置目前的模型觀察矩陣
glTranslatef(-1.5, 0.0, -6.0);
//開始繪制三角形
//-----------------------------------------
glBegin(GL_TRIANGLES);
glColor3f(1.0, 0.0, 0.0); //設定畫筆顔色
glVertex3f(0.0, 1.0, 0.0); //上頂點
glColor3f(0.0, 1.0, 0.0); //設定畫筆顔色
glVertex3f(-1.0, -1.0, 0.0); //左下頂點
glColor3f(0.0, 0.0, 1.0); //設定畫筆顔色
glVertex3f(1.0, -1.0, 0.0); //右下頂點
glEnd();
//-----------------------------------------
//繪制三角形結束
//開始繪制正方形
//-----------------------------------------
glTranslatef(3.0, 0.0, 0.0);
glColor3f(0.5, 0.5, 1.0); //設定畫筆顔色
glBegin(GL_QUADS);
glVertex3f(-1.0, 1.0, 0.0); //左上頂點
glVertex3f(1.0, 1.0, 0.0); //右上頂點
glVertex3f(1.0, -1.0, 0.0); //右下頂點
glVertex3f(-1.0, -1.0, 0.0); //左下頂點
glEnd();
//-----------------------------------------
//繪制正方形結束
}
在繪制三角形的時候,每個頂點前都設定了畫筆顔色,是以三角形每個頂點的顔色會不一樣,這就是平滑着色;
在繪制正方形的時候,隻設定了一次畫筆顔色,是以正方形就一種顔色,這就是單調着色;
void GL_Test::paintGL()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //清除螢幕和深度緩存
glLoadIdentity(); //重置目前的模型觀察矩陣
glTranslatef(-1.5, 0.0, -6.0);
//開始繪制三角形
//-----------------------------------------
glBegin(GL_TRIANGLES);
glColor3f(1.0, 0.0, 0.0);
glVertex3f(0.0, 1.0, 0.0); //上頂點
glColor3f(0.0, 1.0, 0.0);
glVertex3f(-1.0, -1.0, 0.0); //左下頂點
glColor3f(0.0, 0.0, 1.0);
glVertex3f(1.0, -1.0, 0.0); //右下頂點
glEnd();
//-----------------------------------------
//繪制三角形結束
//開始繪制正方形
//-----------------------------------------
glTranslatef(3.0, 0.0, 0.0);
glBegin(GL_QUADS);
glColor3f(1.0, 0.0, 0.0);
glVertex3f(-1.0, 1.0, 0.0); //左上頂點
glColor3f(0.0, 1.0, 0.0);
glVertex3f(1.0, 1.0, 0.0); //右上頂點
glColor3f(0.0, 0.0, 1.0);
glVertex3f(1.0, -1.0, 0.0); //右下頂點
glColor3f(1.0, 1.0, 0.0);
glVertex3f(-1.0, -1.0, 0.0); //左下頂點
glEnd();
//-----------------------------------------
//繪制正方形結束
}