1. 先做1、2週的基本程式
step1: 下載 freeglut-MinGW-3.0.0-1.mp.zip
step2: 進到資料夾,把檔案 freeglut 拉到桌面
step3: 點進 freeglut 👉 lib 資料夾
step4: 複製 libfreeglut.a 並且改名為libglut32.a
step5: 開啟code blocks
step6: 開新專案,專案名稱: week10-0_sample
2.
step1: 開新專案,專案名稱: week10-1_TRT_glutSolidCube_myBody_myArm
step2: 貼上 week09-2 的程式碼
step3: 第一次修改程式碼
👉 要用 glutSolidCube(0.3) 用兩次,紅色的身體,綠色的手臂
目標 👉 用方塊,組出今天的程式
step4: 第二次修改程式碼
👉 把身體的程式,放到 void myBody() 函式
👉 把手臂的程式,放到 void myArm() 函式
3.
step1: 開新專案,專案名稱: week10-2_TRT_glutIdleFunc_rotate
step2: 貼上 week10-1 的程式碼
step3: 加上程式碼
display前 👉 float angle=0;
display 👉 glRotatef(angle++, 0, 0, 1);
main 👉 glutIdleFunc(display);
4.
step1: 開新專案,專案名稱: week10-3_TRT_glRotate_glTranslatef
step2: 貼上 week10-2 的程式碼
step3: 修改程式碼
display 第二個 glPushMatrix(); 👉 glTranslatef(0.225, 0, 0);
//移動旋轉中心
5.
step1: 開新專案,專案名稱: week10-4_TRT_glTranslatef_glRotate_glTranslatef
step2: 貼上 week10-3 的程式碼
step3: 修改程式碼
方塊實心改空心,身體改大 👉 glutWireCube( 0.6 );
👉 glutWireCube( 0.3 );
註解 myBody(); 前的移動位置 👉 ///glTranslatef(-0.6, +0.3, 0);
step4: 把手臂掛到肩膀上
解開 display 第二個 glPushMatrix(); 註解 👉 glTranslatef(+0.3, +0.3, 0);
6. 全部重做一次
step1: 按右鍵專案名稱,選 Activate project
step2: 到 10-1、10-2 檔案,把實心變空心,移動位置註解
修改 👉 glutWireCube( 0.6 ); ///身體方塊
👉 glutWireCube( 0.3 ); ///手臂方塊
註解 👉 ///glTranslatef(-0.6, +0.3, 0);
👉 ///glTranslatef(+0.0, +0.3, 0);
7.
step1: 開新專案,專案名稱: week10-5_two_layers
step2: 貼上 week10-4 的程式碼
step3: 修改程式碼
void myArm()
{
glPushMatrix(); ///上保護
glColor3f(0, 1, 0); ///綠色的手臂
glScalef(1.5, 0.5, 0.5); ///寬變1.5,高度變0.5倍
glutWireCube( 0.3 ); ///方塊
glPopMatrix();
}
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
///glTranslatef(-0.6, +0.3, 0);
myBody();
glPopMatrix();
glPushMatrix();
glTranslatef(+0.3, +0.3, 0);
glRotatef(angle++, 0, 0, 1);
glTranslatef(0.225, 0, 0);
myArm();
glPushMatrix();
glTranslatef(0.225, 0, 0);
glRotatef(angle++, 0, 0, 1);
glTranslatef(0.225, 0, 0);
myArm();
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
}
8.
step1: 開新專案,專案名稱: week10-6_TRT_left_right
step2: 貼上 week10-5 的程式碼
step3: 複製右半邊的手臂程式碼,修改程式碼,變左手邊
display 👉 ///右半邊
glPushMatrix();
glTranslatef(+0.3, +0.3, 0);
glRotatef(angle++, 0, 0, 1);
glTranslatef(0.225, 0, 0);
myArm();
glPushMatrix();
glTranslatef(0.225, 0, 0);
glRotatef(angle++, 0, 0, 1);
glTranslatef(0.225, 0, 0);
myArm();
glPopMatrix();
glPopMatrix();
///左半邊(複製右邊的)
glPushMatrix();
glTranslatef(-0.3, +0.3, 0);
glRotatef(angle++, 0, 0, 1);
glTranslatef(-0.225, 0, 0);
myArm();
glPushMatrix();
glTranslatef(-0.225, 0, 0);
glRotatef(angle++, 0, 0, 1);
glTranslatef(-0.225, 0, 0);
myArm();
glPopMatrix();
glPopMatrix();
9.
step1: 開新專案,專案名稱: week10-7_TRT_mouse_motion_angle
step2: 貼上 week10-6 的程式碼
step3: 修改、增加程式碼
main 👉 glutMotionFunc(motion);
motion 👉 void motion(int x, int y)
{
angle = x;
glutPostRedisplay(); ///重畫畫面
}
display 👉 angle++ 都改回 angle,左手邊的改 -angle
沒有留言:
張貼留言