1. 繪圖主程式
int main(int argc, char *argv[]){
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("GLUT Shapes"); /// 建立3D視窗("視窗名")
glutDisplayFunc(teapot) /// 設定display函式
glutMainLoop();
return EXIT_SUCCESS;
}
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("GLUT Shapes"); /// 建立3D視窗("視窗名")
glutDisplayFunc(teapot) /// 設定display函式
glutMainLoop();
return EXIT_SUCCESS;
}
2. 色彩
。以茶壺為例
void teapot(void){
glClearColor(1,0,0,0); /// 設定預設顏色(R,G,B,A) A:半透明度
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); ///初始化
glColor3f(1,1,0); /// 設定物件色彩(R,G,B) 3f表3個0-1之間float
glutSolidTeapot(0.3); /// 繪製物件-茶壺(大小)
glutSwapBuffers(); /// 將緩衝區繪圖結果切換至畫面上顯示 雙緩衝區繪圖
}
void teapot(void){
glClearColor(1,0,0,0); /// 設定預設顏色(R,G,B,A) A:半透明度
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); ///初始化
glColor3f(1,1,0); /// 設定物件色彩(R,G,B) 3f表3個0-1之間float
glutSolidTeapot(0.3); /// 繪製物件-茶壺(大小)
glutSwapBuffers(); /// 將緩衝區繪圖結果切換至畫面上顯示 雙緩衝區繪圖
}
3. 點、線、面
。以畫三角形為例
void triangle(void){
glClearColor(1,1,1,0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// glBegin(GL_POINTS); /// 點
// glBegin(GL_LINE_LOOP); /// 線
glBegin(GL_POLYGON); /// 面
glColor3f(1,0,0);
glVertex3f(-0.5,1,0); /// 設定頂點(X,Y,Z)
glColor3f(0,1,0);
glVertex3f(-1,-1,0);
glVertex3f(0,-1,0);
glEnd(); /// 結束繪圖
glBegin(GL_POLYGON);
glColor3f(1,0,0);
glVertex3f(0.5,1,0);
glColor3f(0,0,1);
glVertex3f(0,-1,0);
glVertex3f(1,-1,0);
glEnd();
glutSwapBuffers();
}
void triangle(void){
glClearColor(1,1,1,0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// glBegin(GL_POINTS); /// 點// glBegin(GL_LINE_LOOP); /// 線
glBegin(GL_POLYGON); /// 面
glColor3f(1,0,0);
glVertex3f(-0.5,1,0); /// 設定頂點(X,Y,Z)
glColor3f(0,1,0);
glVertex3f(-1,-1,0);
glVertex3f(0,-1,0);
glEnd(); /// 結束繪圖
glBegin(GL_POLYGON);
glColor3f(1,0,0);
glVertex3f(0.5,1,0);
glColor3f(0,0,1);
glVertex3f(0,-1,0);
glVertex3f(1,-1,0);
glEnd();
glutSwapBuffers();
}

沒有留言:
張貼留言