先建置glut的環境,記得改lib內容 glut32.a
#include <GL/glut.h>
float angle = 0;
void myCube()
{
glPushMatrix();
glScalef(1,0.3,0.3);
glutSolidCube(0.5);
glPopMatrix();
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
//glTranslatef(0.5,0.5,0);
//glRotatef(angle,0,0,1);
//glTranslatef(0.45,0,0);
//glutSolidTeapot(0.3);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
myCube();
glPopMatrix();
glutSwapBuffers();
angle++;
}
int main(int argc,char *argv[])
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE| GLUT_DEPTH);
glutCreateWindow("week05");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
呼叫myCube函式,並且會顯示出長方形,
加兩行 glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
讓他可以旋轉。
兩層Push TRT Pop
glPushMatrix();
glTranslatef(0.25,0,0);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
myCube();
glPushMatrix();
glTranslatef(0.25,0,0);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
myCube();
glPopMatrix();
glPopMatrix();
利用上一個程式碼延伸出左右手臂的概念
正負值來調整位置
兩隻手臂都是兩層Push TRT Pop
glPushMatrix();
glTranslatef(0.25,0,0);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
myCube();
glPushMatrix();
glTranslatef(0.25,0,0);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
myCube();
glPopMatrix();
glPopMatrix();
glPushMatrix();
glTranslatef(-0.25,0,0);
glRotatef(angle,0,0,1);
glTranslatef(-0.25,0,0);
myCube();
glPushMatrix();
glTranslatef(-0.25,0,0);
glRotatef(angle,0,0,1);
glTranslatef(-0.25,0,0);
myCube();
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
angle++;
}
angle角度改負值
void motion(int x,int y)
{
angle = x;
}
glutMotionFunc(motion);
利用滑鼠移動手臂
沒有留言:
張貼留言