(1)自製3D模型
(2)利用mouse旋轉
(3)回家作業
這禮拜第一個作業
會旋轉的甜甜圈~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
程式碼:
#include <GL/glut.h>
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glRotatef(angle,0,1,0);
glutWireTorus(0.5,0.3,30,30);
glFlush();
angle+=0.01;
}
int main(int argc, char**argv)
{
glutInit(&argc,argv);
glutCreateWindow("02160473賴緯漢");
glutDisplayFunc(display);
glutMainLoop();
}
會3D選轉的正方形~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
自己畫點自己做
這樣還滿好玩der
只是感覺感覺有點難...
程式碼:
#include <GL/glut.h>
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glRotatef(angle,0,1,0);
glBegin(GL_LINE_LOOP);///空心
glVertex3f(0.2,0.2,0.8);
glVertex3f(0.2,-0.2,0.8);
glVertex3f(-0.2,-0.2,0.8);
glVertex3f(-0.2,0.2,0.8);
glEnd();
glBegin(GL_POLYGON);///空心
glVertex3f(0.2,0.2,-0.8);
glVertex3f(0.2,-0.2,-0.8);
glVertex3f(-0.2,-0.2,-0.8);
glVertex3f(-0.2,0.2,-0.8);
glEnd();
glPopMatrix();
glFlush();
angle+=0.01;
}
int main(int argc, char**argv)
{
glutInit(&argc,argv);
glutCreateWindow("02160473賴緯漢");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
這是空心的正方形喔~~~~~~~~~~~~~
連結起來的程式碼:
glBegin(GL_LINES);///空心
glVertex3f(0.2,0.2,0.8);
glVertex3f(0.2,0.2,-0.8);
glVertex3f(0.2,-0.2,0.8);
glVertex3f(0.2,-0.2,-0.8);
glVertex3f(-0.2,-0.2,0.8);
glVertex3f(-0.2,-0.2,-0.8);
glVertex3f(-0.2,0.2,0.8);
glVertex3f(-0.2,0.2,-0.8);
glEnd();
新增了邊線喔(顏色可以自己選擇耶,覺得厲害)
面與面之間相連
三角形旋轉(可是擠在一起= =)
用Mouse使物體旋轉(老師說是不太好的方式喔~)
新增兩個angle變數
列印出x,y旋轉的角度
void motion(int x,int y)
{
printf("%d %d\n",x,y);
angle = x;
angle = y;
}
glutMotionFunc(motion);
使圖型變成實心(實3D)
///要在main()裡面,glutCreateWindow()之前
///加一行glutInitDisplayMode(GLUT_DEPTH)
///讓顯示的window有3D深度的功能
glEnable(GL_DEPTH_TEST);///開啟Depth Test深度測試,近的會擋到遠的,遠的不會擋到近的
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glutInitDisplayMode(GLUT_DEPTH);///讓顯示的window有3D深度的功能
沒有留言:
張貼留言