2017年10月19日 星期四

Leo 學習筆記 Week06

複習上周進度

編譯source資料夾裡面的原始碼

1.下載moodle裡面的week05資料夾並解壓縮

2.用notepad++打開week05.cbp並修改include的路徑為電腦桌面freeglut資料夾的路徑

3.到codeblocks的setting>compiler將第二個選項取消勾選


4.執行後結果

打光

1.加入打光功能函式:
glEnable(GL_LIGHTING);
開啟全部的打光功能
glEnable(GL_LIGHT0);
開啟第0號燈
glLightfv(GL_LIGHT0,GL_POSITION,pos);
設定0號燈光的位置,pos為燈光位置的陣列
glEnable(GL_DEPTH_TEST);
開啟深度測試

2.執行後結果

鍵盤功能
 
1.在main中增加glutKeyboardFunc(keyboard)函式,並定義keyboard函式:
void keyboard(unsigned char key, int x,int y)
{
    printf("now: %c (%d %d)\n",key,x,y);
}
key為輸入的按鍵,x,y為滑鼠所在位置的座標

2.執行後結果,在鍵盤上按按鍵時會輸出現在按的按鍵和箭頭所在的座標

使用按鍵旋轉模型

1.在keyboard中加入以下函式
if(key=='1')rotateX++;
if(key=='2')rotateY++;
if(key=='3')rotateZ++;
glutPostRedisplay();
rotateX, rotateY, rotateZ為三軸分別的旋轉角度

2.執行後結果,按1,2,3及可分別對x,y,z軸旋轉

使用滑鼠旋轉模型
1.在mouse函式中加入
if(state==GLUT_DOWN){
        oldX=x,oldY=y;
}
此為當滑鼠按下時將舊的位置改為新的位置

2.定義motion函式
void motion(int x,int y)
{
    rotateY+= -(x-oldX);
    rotateX+= -(y-oldY);
    oldX=x,oldY=y;

    glutPostRedisplay();
}

3.執行後即可使用滑鼠旋轉


沒有留言:

張貼留言