2017年9月21日 星期四

師大柯雷吉歐的計圖筆記-Week2

親手打造第一個圖學程式

一、介紹基本框架
#include <GL/glut.h>  //呼叫3D GLUT 函式庫(外掛)
void display()  //設定display函式
{
    glClearColor(0,1,1,0);  //制定背景顏色,0,1,1會設為青色
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);  //重新設定你制定的背景顏色

    glColor3f(0,0,1);  //制定色彩,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參數數量;argv是參數的全部,用陣列存起來
{
  glutInit(&argc,argv);  //開始使用GLUT,使用樓上的參數
  glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);  //開始設定顯示模式
  glutCreateWindow("GLUT Shapes");  //建立GLUT  3D視窗
  glutDisplayFunc(display);  //註冊display函式
  glutMainLoop();  //主要迴圈  讓他一直跑
}

以下為上述程式跑出來的結果

以下再貼上上述程式碼
#include <GL/glut.h>
void display()
{
    glClearColor(0,1,1,0);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glColor3f(0,0,1);
    glutSolidTeapot(0.3);

    glutSwapBuffers();
}

int main(int argc,char *argv[])
{
  glutInit(&argc,argv);
  glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
  glutCreateWindow("GLUT Shapes");
  glutDisplayFunc(display);
  glutMainLoop();

}

二、畫出基礎 點線面 圖形

把上述紅色那行實心茶壺程式碼,改成以下五行
    glBegin(GL_POLYGON);  //開始畫(多邊形)
    glVertex3f(-1,1,0);  //頂點英文
    glVertex3f(1,1,0);  //Vertex
    glVertex3f(0,-1,0);  //3f為x,y,z  3個參數,float

    glEnd();  //結束畫

跑出來的結果~

以下再貼上上述程式碼
#include <GL/glut.h>
void display()
{
    glClearColor(0,1,1,0);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glColor3f(0,0,1);

    glBegin(GL_POLYGON);
    glVertex3f(-1,1,0);
    glVertex3f(1,1,0);
    glVertex3f(0,-1,0);
    glEnd();

    glutSwapBuffers();
}

int main(int argc,char *argv[])
{
  glutInit(&argc,argv);
  glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
  glutCreateWindow("GLUT Shapes");
  glutDisplayFunc(display);
  glutMainLoop();

}

沒有留言:

張貼留言