2017年9月21日 星期四

LYC的計圖學習筆記-WEEK02

重點一:Notepad++將檔名更改.cpp即可改變文字顏色

重點二:用5-10行寫出Glut的基礎內容

#include <GL/glut.h> //呼叫涵式庫windows自己下載;moc自己就有
int main(int argc, char *argv[]) //主程式;argc參數數量;*argv[]參數內容
{
glutInit(&argc, argv); //初始化
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); //初始化設定模式
glutCreateWindow("GLUT Shapes"); //創造視窗
glutMainLoop(); //無限迴圈
return 0; //結束
}
p.s. glutInitDisplayMode(顏色,雙緩存,3D(深度));

重點三:寫出Glut使3D視窗能出現點,線,面,顏色

1.畫出茶壺

#include <GL/glut.h>
void display(void)
{
    glClearColor(1,0,0,0); //設定背景顏色(目前為紅色)
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //清 顏色 | 3D(深度) 的緩存
    glColor3f(0,1,1); //賦與物體顏色(目前為靛色);f為float
    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); //註冊display涵式
glutMainLoop();
return 0;
}
p.s.1 glClearColor(紅,綠,藍,透明度);
p.s.2. glColor3f(紅,綠,藍);
p.s.3 為何要用glutSwapBuffers();        

最終結果:

2.以點,線畫出面

#include <GL/glut.h>
void display(void)
{
    glClearColor(1,0,0,1000000);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glColor3f(0,1,1);
    glBegin(GL_POLYGON); //開始畵polygon(多邊形)
    glColor3f(0,1,1); //從點開始擴散顏色
    glVertex3f(0,0.5,0); //決定頂點之一;f為float
    glColor3f(1,0,1); //從點開始擴散顏色
    glVertex3f(-0.707,-0.707,0); //決定頂點之一;f為float
    glColor3f(1,1,0); //從點開始擴散顏色
    glVertex3f(0.707,-0.707,0); //決定頂點之一;f為float
    glEnd(); //畫圖結束
    glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("GLUT Shapes");
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
p.s.1 glVertex3f(); 將整個視窗視為從-1~1
p.s.2 glVertex3f(x座標,y座標,z座標); 

最終結果:

沒有留言:

張貼留言