今天學習3D物件
1.下載課本範例 http:/jsyeh.org/3dcg10 (FaceBook有連結)
跑 transformation.exe檔
2.下載freeglut 重複之前上課步驟,開啟codeblock建專案,寫程式碼
#include <GL/glut.h>
void display()
{
glTranslatef(0.8,0.8,0);///這是week4增加的新指令
glutSolidTeapot(0.3);
glFlush();
}
int main(int argc,char**argv)
{
glutInit(&argc,argv);
glutCreateWindow("02160022資傳拉拉得第一");
glutDisplayFunc(display);
glutMainLoop();
}
3.三D物件-旋轉甜甜圈
◎#include <GL/glut.h>
void display()
{
///glTranslatef(0.8,0.8,0);
glutSolidTorus(0.3,0.7,30,30); 跑出甜甜圈~~~~
glFlush();
}
int main(int argc,char**argv)
{
glutInit(&argc,argv);
glutCreateWindow("02160022資傳拉拉得第一");
glutDisplayFunc(display);
glutMainLoop();
}
◎#include <GL/glut.h>
void display()
{
///glTranslatef(0.8,0.8,0);
glutWireTorus(0.3,0.7,30,30);空心甜甜圈跑出來了~~~~
glFlush();
}
int main(int argc,char**argv)
{
glutInit(&argc,argv);
glutCreateWindow("02160022資傳拉拉得第一");
glutDisplayFunc(display);
glutMainLoop();
}
◎(內徑r,外徑R,橫切,縱切)
#include <GL/glut.h>
void display()
{
///glTranslatef(0.8,0.8,0);
glutWireTorus(0.3,0.7,30,90);改變縱切值
glFlush();
}
int main(int argc,char**argv)
{
glutInit(&argc,argv);
glutCreateWindow("02160022資傳拉拉得第一");
glutDisplayFunc(display);
glutMainLoop();
}
◎
#include <GL/glut.h>float angle=0;
void display()
{
glRotatef(angle,1,1,0);
glutWireTorus(0.3,0.7,30,90); 把甜甜圈變不見
glFlush();
angle+=2;
}
int main(int argc,char**argv)
{
glutInit(&argc,argv);
glutCreateWindow("02160022資傳拉拉得第一");
glutDisplayFunc(display);
glutMainLoop();
}
◎
#include <GL/glut.h>
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT); 清畫面
glRotatef(angle,1,1,0);
glutWireTorus(0.3,0.7,30,90);
glFlush();
angle+=2;
}
int main(int argc,char**argv)
{
glutInit(&argc,argv);
glutCreateWindow("02160022資傳拉拉得第一");
glutDisplayFunc(display);
glutMainLoop();
}
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT); ///因為畫面會亂,所以(1)清畫面Clear
glPushMatrix(); ///因為畫面會亂,所以(2)備份Matrix
glRotatef(angle,1,1,0);
glutWireTorus(0.3,0.7,30,90);
glPopMatrix(); ///因為畫面會亂,所以(3)還原Matrix
glFlush(); ///為了要讓畫面出來,所以把他們沖出來
angle+=0.1;
}
int main(int argc,char**argv)
{
glutInit(&argc,argv);
glutCreateWindow("02160022資傳拉拉得第一");
glutDisplayFunc(display); ///當電腦需要Display時,去呼叫的函式 dispaly()
glutMainLoop(); ///閒閒沒事幹時就呼叫函式 display()
}
沒有留言:
張貼留言