##week10
##week10-1_glutWireCube_myBody_myArm
0. 桌面安裝 freeglut,把 lib 的l ibfreeglut.a複製成 libglut32.a
1.File-New-Project ,Glut 專案week10-1_glutWireCube_myBody_myArm
3.要把 void display()改寫一下,呼叫 myBody myArm()
##week10-2_rotate_myArm
1.File-New-Project ,Glut 專案week10-2_rotate_myArm
3.外面加上 float angle=0;
4.在 main() 加上glutIdleFunc(display);
5.在 display()裡,myArm()的前後要加上glPushMatrix();glRotatef(angle++,0,0,1);glPopMatrix();
///貼上week10-1_glutWireCube_myBody_myArm的程式碼
#include <GL/glut.h>
void myBody(){
glPushMatrix();
/// glTranslatef(0.0,-0.3,0);
glColor3f(1,0,0);///紅色的
glutWireCube(0.6);///glutWireCube(0.3);
glPopMatrix();
}
void myArm(){
glPushMatrix();///備份矩陣
glColor3f(0,1,0);///綠色的
glScalef(1,0.4,0.4);///my Body();
glutWireCube(0.3);
glPopMatrix();
}
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
myBody();
glPushMatrix();
glRotatef(angle++,0,0,1);
myArm();
glPopMatrix();
glutSwapBuffers();
}
int main(int argc, char*argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week09 Microsoft Visual Studio");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
1.File-New-Project ,Glut 專案week10-3_rotate_translate_myArm
3.加上 glTranslatef(0,15,0,0);
void myBody(){
glPushMatrix();
/// glTranslatef(0.0,-0.3,0);
glColor3f(1,0,0);///紅色的
glutWireCube(0.6);///glutWireCube(0.3);
glPopMatrix();
}
void myArm(){
glPushMatrix();///備份矩陣
glColor3f(0,1,0);///綠色的
glScalef(1,0.4,0.4);///my Body();
glutWireCube(0.3);
glPopMatrix();
}
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
myBody();
glPushMatrix();
glRotatef(angle++,0,0,1);
glTranslatef(0.15,0,0);
myArm();
glPopMatrix();
glutSwapBuffers();
}
int main(int argc, char*argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week09 Microsoft Visual Studio");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
1.File-New-Project ,Glut 專案week10-4_translate_rotate_translate_myArm
3.加上最後一行glTranslatef(0.3,0.3,0);放在最上面 掛上去
void myBody(){
glPushMatrix();
/// glTranslatef(0.0,-0.3,0);
glColor3f(1,0,0);///紅色的
glutWireCube(0.6);///glutWireCube(0.3);
glPopMatrix();
}
void myArm(){
glPushMatrix();///備份矩陣
glColor3f(0,1,0);///綠色的
glScalef(1,0.4,0.4);///my Body();
glutWireCube(0.3);
glPopMatrix();
}
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
myBody();
glPushMatrix();
glTranslatef(0.3,0.3,0);
glRotatef(angle++,0,0,1);
glTranslatef(0.15,0,0);
myArm();
glPopMatrix();
glutSwapBuffers();
}
int main(int argc, char*argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week09 Microsoft Visual Studio");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
##week10-5_TRT_TRT_myArm
1.File-New-Project ,Glut 專案week10-5_TRT_TRT_myArm
3.把整套glPushMatrix();glTranslatef(0.15,0,0);glRotatef(angle++,0,0,1);glTranslatef(0.15,0,0);
myArm(); glPopMatrix(); 要插在中間
void myBody(){
glPushMatrix();
/// glTranslatef(0.0,-0.3,0);
glColor3f(1,0,0);///紅色的
glutWireCube(0.6);///glutWireCube(0.3);
glPopMatrix();
}
void myArm(){
glPushMatrix();///備份矩陣
glColor3f(0,1,0);///綠色的
glScalef(1,0.4,0.4);///my Body();
glutWireCube(0.3);
glPopMatrix();
}
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
myBody();
glPushMatrix();
glTranslatef(0.3,0.3,0);
glRotatef(angle++,0,0,1);
glTranslatef(0.15,0,0);
myArm();
glPushMatrix();
glTranslatef(0.15,0,0);
glRotatef(angle++,0,0,1);
glTranslatef(0.15,0,0);
myArm();
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
}
int main(int argc, char*argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week09 Microsoft Visual Studio");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
##week10-6_left_right_myArm
1.File-New-Project ,Glut 專案week10-5_TRT_TRT_myArm
##week10-7_mouse_motion_angle_myArm
1.File-New-Project ,Glut 專案week10-7_mouse_motion_angle_myArm
3.修改程式碼
void myBody(){
glPushMatrix();
/// glTranslatef(0.0,-0.3,0);
glColor3f(1,0,0);///紅色的
glutWireCube(0.6);///glutWireCube(0.3);
glPopMatrix();
}
void myArm(){
glPushMatrix();///備份矩陣
glColor3f(0,1,0);///綠色的
glScalef(1,0.4,0.4);///my Body();
glutWireCube(0.3);
glPopMatrix();
}
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
myBody();
glPushMatrix();///右半邊
glTranslatef(0.3,0.3,0);
glRotatef(angle++,0,0,1);
glTranslatef(0.15,0,0);
myArm();
glPushMatrix();
glTranslatef(0.15,0,0);
glRotatef(angle++,0,0,1);
glTranslatef(0.15,0,0);
myArm();
glPopMatrix();
glPopMatrix();
glPushMatrix();///左半邊
glTranslatef(-0.3,0.3,0);
glRotatef(angle,0,0,1);
glTranslatef(-0.15,0,0);
myArm();
glPushMatrix();
glTranslatef(-0.15,0,0);
glRotatef(angle,0,0,1);
glTranslatef(-0.15,0,0);
myArm();
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
}
void motion(int x,int y){
angle = x;
glutPostRedisplay();
}
int main(int argc, char*argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week09 Microsoft Visual Studio");
glutDisplayFunc(display);
glutMotionFunc(motion);
glutIdleFunc(display);
glutMainLoop();
}
##week10-8_mouse_motion_angle_2myArm
1.File-New-Project ,Glut 專案week10-8_mouse_motion_angle_2myArm
3.把 display() 裡面的左邊的 angle 改成 angle
##week10-9_PlaySound
1.File-New-Project ,Glut 專案week10-9_PlaySound
3.在include 的地方,加上#include <mmsystem.h>
4.在main第一行,加入PlaySound("C:/horse.wav",NULL,SND_ASYNC);
5.把老師的音檔horse.wav放在根目錄


沒有留言:
張貼留言