實作一: 呈現實心茶壺
Step1. 由上週的步驟,先開啟一GLUT專案
Step2.下載notepad++文字編輯器,開啟以編輯程式碼 。Step3. 經過刪減,並加上畫茶壺、加顏色的程式碼如以下所示
#include <GL/glut.h> ///呼叫3D GLUT外掛
void display()
{
glClearColor(1,1,0,0); ///將清除顏色設為黃色
///(R,G,B,A),RGB三原色以及透明度
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); ///執行清除顏色緩衝以及清除深度緩衝的任務
///若將此行與前一行程式碼對調,晃動畫面將造成背景色的變化 glColor3f(0,0,1); ///設置顏色為藍色
///3f的3表示3個參數,f表示float,介於0.0-1.0間
glutSolidTeapot(0.3); ///使用glut外掛,顯示出實心茶壺
glutSwapBuffers(); ///變更顯示的buffer,詳見雙緩衝區
}
int main(int argc, char *argv[]) ///主程式的函式,吃argc參數數量
{
glutInit(&argc, argv); ///初始化GLUT library
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); ///設定顯示模式
glutCreateWindow("視窗名"); ///建立GLUT 3D視窗並設定標題
glutDisplayFunc(display); glutMainLoop(); ///主要迴圈,一直跑
return EXIT_SUCCESS;
}
void display()
{
glClearColor(1,1,0,0); ///將清除顏色設為黃色
///(R,G,B,A),RGB三原色以及透明度
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); ///執行清除顏色緩衝以及清除深度緩衝的任務
///若將此行與前一行程式碼對調,晃動畫面將造成背景色的變化 glColor3f(0,0,1); ///設置顏色為藍色
///3f的3表示3個參數,f表示float,介於0.0-1.0間
glutSolidTeapot(0.3); ///使用glut外掛,顯示出實心茶壺
glutSwapBuffers(); ///變更顯示的buffer,詳見雙緩衝區
}
int main(int argc, char *argv[]) ///主程式的函式,吃argc參數數量
{
glutInit(&argc, argv); ///初始化GLUT library
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); ///設定顯示模式
glutCreateWindow("視窗名"); ///建立GLUT 3D視窗並設定標題
glutDisplayFunc(display); glutMainLoop(); ///主要迴圈,一直跑
return EXIT_SUCCESS;
}
Step4. 貼回codeblocks執行程式,實作出一可繪出實心茶壺的程式

實作二: 利用點線面畫出圖形
Step1. 將上一實作之程式碼稍作修改繪製三個點,連線形成三角形
#include <GL/glut.h> ///呼叫3D GLUT外掛
void display()
{
glClearColor(1,1,0,0); ///將清除顏色設為黃色
///(R,G,B,A),RGB三原色以及透明度
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); ///執行清除顏色緩衝以及清除深度緩衝的任務
///若將此行與前一行程式碼對調,晃動畫面將造成背景色的變化
glColor3f(0,0,1); ///設置顏色為藍色
///3f的3表示3個參數,f表示float,介於0.0-1.0間
glBegin(GL_POLYGON); ///繪製一凸多邊形
glVertex3f(1,1,0); ///設置頂點座標
glVertex3f(-1,1,0);
glVertex3f(0,-1,0);
glEnd(); ///完成圖形繪製
glutSwapBuffers(); ///變更顯示的buffer,詳見雙緩衝區
}
int main(int argc, char *argv[]) ///主程式的函式,吃argc參數數量
{
glutInit(&argc, argv); ///初始化GLUT library
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); ///設定顯示模式
glutCreateWindow("視窗名"); ///建立GLUT 3D視窗並設定標題
glutDisplayFunc(display); glutMainLoop(); ///主要迴圈,一直跑
return EXIT_SUCCESS;
}
Step2. 執行程式,成功繪製一多邊形

(補充)
若在每一頂點設置前都先設置顏色,如以下這段程式碼:
glColor3f(1,0,0); glVertex3f(1,1,0);
glColor3f(0,1,0); glVertex3f(-1,1,0);
glColor3f(0,0,1); glVertex3f(0,-1,0);
可形成漸層圖樣。

回家作業交代
利用20個點,繪製出一圖形(可利用小畫家找座標)。
注意!目前教的圖形繪製方式僅限於凸多邊形,若想畫凹多邊形,則需將圖形作分割。
沒有留言:
張貼留言