檔案網址:http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/
-
壓縮在同一個資料夾(WINDOWS要包含DATA跟GLUT32.DLL)
Download
freeglut 3.0.0 for MinGW壓縮檔案,在LIB裡面複製LIBFREEGLUT,貼上改成LIBGLUT32。
開啟CODEBLOCK。FILE(左上角)->NEW->PROJECT->GLUT PROJECT->(命名檔案)->下一步->路徑改成FREEGLUT資料夾的路徑。.
(1)主題:旋轉~ROTATION~
xyz代表著三軸。在參數裡面代表著,以(x)軸為固定,進行的轉動。
(2)實作:
- ///glrotatef()
#include<GL/glut.h>
float angle=0;///等等自動轉動用的變數
void display(){
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();///保護MATRIX
glRotated(angle,0,1,0);
glutSolidTeapot(0.3);
glPopMatrix();///POP還原MATRIX
glutSwapBuffers();
angle+=3;///更改角度
}
int main(int argc,char **argv){
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("WEEK5 ROTATE");
glutDisplayFunc(display);
glutIdleFunc(display);///今天新教的,用處!閒置時更新
glutMainLoop();
///GL基礎 GLUT特別的
}
(3)
- 滑鼠轉,自動轉
- 滑鼠
- A:
MAIN(){ glutMotionFunc(motion);}
- 自動
- 1
(4)
完整版本!
(滑鼠)
#include<GL/glut.h>
#include<stdio.h>
float angle=0;///等等自動轉動用的變數
void display(){
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();///保護MATRIX
glRotated(angle,0,1,0);
glutSolidTeapot(0.3);
glPopMatrix();///POP還原MATRIX
glutSwapBuffers();
//angle+=3;///更改角度
}
void motion(int x , int y){
//當滑鼠去DRAG MOTION動作時
angle=x;
display();
}
void mouse(int button,int state,int x,int y){
printf("%d %d %d %d\n",button,state,x,y);///讀滑鼠點下去與彈起來的值
}
int main(int argc,char **argv){
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("WEEK5 ROTATE");
glutDisplayFunc(display);
glutIdleFunc(display);///今天新教的,用處!閒置時更新
glutMotionFunc(motion);
glutMouseFunc(mouse);
glutMainLoop();
///GL基礎 GLUT特別的
}
(自動)
沒有留言:
張貼留言