檔案網址:http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/
壓縮在同一個資料夾(WINDOWS要包含DATA跟GLUT32.DLL)
檔案:TRANSFORMATION(變形)
第一條
一:左右。二:上下。三:前後。
第二條:旋轉角度。
第三條:物件的XYZ大小
右鍵可以RESET。
P.S 注意壓縮的DATA檔案。不要有兩層DATA,會有讀不到造成的閃退問題。
開啟CODEBLOCK的GLUT專案。需要FREEGLUT-MINGW.ZIP檔案。可以在FREEGLUT WINDOW的網站中找到。
找到
freeglut 3.0.0 MinGW Package
Downloadfreeglut 3.0.0 for MinGW
壓縮檔案,在LIB裡面複製LIBFREEGLUT,貼上改成LIBGLUT32
開啟CODEBLOCK。FILE(左上角)->NEW->PROJECT->GLUT PROJECT->(命名檔案)->下一步->路徑改成FREEGLUT資料夾的路徑。.
把程式碼改成
#include<GL/glut.h>
void display()
{
glPushMatrix();//copy矩陣
glTranslatef(0.3,0.3,0);//移動 (改變矩陣)
glutSolidTeapot(0.3);
glPopMatrix();//還原矩陣
glutSwapBuffers();
}
int main(int argc,char**argv){
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("WEEK04");
glutDisplayFunc(display);
glutMainLoop();
}
以上的缺點,參數訂死無法移動。故更新之後。
#include<GL/glut.h>
float x=150,y=150;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();//copy矩陣
glTranslatef((x-150)/150.0,-(y-150)/150.0,0);//移動 (改變矩陣),會根據讀到的值改變
glutSolidTeapot(0.3);
///glVertex2f((X-150)/150.0,-(y-150)/150.0,0);
glPopMatrix();//還原矩陣
glutSwapBuffers();
}
void mouseMOVE(int nowX,int nowY)//滑鼠MOTION(動作)
{
x=nowX;//滑鼠MOTION(動作)
y=nowY;//滑鼠MOTION(動作)
display();//滑鼠動作馬上更新
}
int main(int argc,char**argv){
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("WEEK04");
glutDisplayFunc(display);
glutMotionFunc(mouseMOVE);//滑鼠動作馬上動作(所以需要按住左鍵)
glutMainLoop();
}
將能夠按著左鍵後,跟著滑鼠一起動。
沒有留言:
張貼留言