2017年9月22日 星期五

ClassNote_Week02 色彩 & 點、線、面

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;
}

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();      /// 將緩衝區繪圖結果切換至畫面上顯示  雙緩衝區繪圖
}

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();
}

沒有留言:

張貼留言