步驟1:解壓縮freeglut檔案
步驟2:用Code::Blocks建立新的Project
步驟3:將該設定的設定完成
步驟4:將freeglut.dll丟到Project資料夾中

步驟5:將程式碼打進去
#include <GL/glut.h>
void display()
{
glClearColor(0,0,0,0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glutSolidTeapot(0.3);
glTranslatef(0.5,0,0);
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("ROBOT");
glutDisplayFunc(display);
glutMainLoop();
}

課堂作業2:
步驟1:將課堂作業1中的程式碼進行修改,讓茶壺可以進行自轉、公轉
#include <GL/glut.h>
float rotX=0;
void display()
{
glClearColor(0,0,0,0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glutSolidTeapot(0.3);
glRotated(rotX, 0,0,1);//讓中間的茶壺變成公轉的中心點
glTranslatef(0.5,0,0);
glRotated(rotX, 0,0,1);//自轉
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
void motion(int x,int y)
{
rotX=x;
glutPostRedisplay();//glutPostRedisplay();
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("ROBOT");
glutDisplayFunc(display);
glutMotionFunc(motion);
glutMainLoop();
}

課堂作業3:
步驟1:修改display中glRotated程式可以修改他轉動的方向


課堂作業4:
步驟1:用glTranslatef、glutWireCube、glTranslatef拼出一個簡單的機器人

步驟2:加入T-R-T讓手臂關節可以擺動

(程式碼如下)
#include <GL/glut.h>
float rotX=0;
void display()
{
glClearColor(0,0,0,0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glutWireCube(0.3);
glPushMatrix();
glTranslatef(0,0.2,0);
glutWireCube(0.1);
glTranslatef(0,0.2,0);
glutWireCube(0.3);
glPopMatrix();
glPushMatrix();
glTranslatef(0.15,0.1,0);
glRotatef(rotX, 0,0,1);
glTranslatef(0.05,0,0);
glutWireCube(0.1);
glTranslatef(0.05,0,0);
glRotatef(rotX, 0,0,1);
glTranslatef(0.05,0,0);
glutWireCube(0.1);
glTranslatef(0.05,0,0);
glRotatef(rotX, 0,0,1);
glTranslatef(0.05,0,0);
glutWireCube(0.1);
glPopMatrix();
glPushMatrix();
glTranslatef(-0.15,0.1,0);
glRotatef(rotX, 0,0,1);
glTranslatef(-0.05,0,0);
glutWireCube(0.1);
glTranslatef(-0.05,0,0);
glRotatef(rotX, 0,0,1);
glTranslatef(-0.05,0,0);
glutWireCube(0.1);
glTranslatef(-0.05,0,0);
glRotatef(rotX, 0,0,1);
glTranslatef(-0.05,0,0);
glutWireCube(0.1);
glPopMatrix();
glPushMatrix();
glTranslatef(0.1,-0.2,0);
glutWireCube(0.1);
glTranslatef(0,-0.1,0);
glutWireCube(0.1);
glTranslatef(0,-0.1,0);
glutWireCube(0.1);
glPopMatrix();
glPushMatrix();
glTranslatef(-0.1,-0.2,0);
glutWireCube(0.1);
glTranslatef(0,-0.1,0);
glutWireCube(0.1);
glTranslatef(0,-0.1,0);
glutWireCube(0.1);
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
}
void motion(int x,int y)
{
rotX=x;
glutPostRedisplay();//glutPostRedisplay();
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("ROBOT");
glutDisplayFunc(display);
glutMotionFunc(motion);
glutMainLoop();
}
沒有留言:
張貼留言