#include <GL/glut.h>
float angle=0; void display() { glClear(GL_COLOR_BUFFER_BIT); glPushMatrix(); glRotatef(angle,0,1,0); glBegin(GL_POLYGON); glColor3f(1,0,0); glVertex3f(0.1,0.1,0.8); glVertex3f(-0.1,0.1,0.8); glVertex3f(-0.1,-0.1,0.8); glVertex3f(0.1,-0.1,0.8); glEnd(); glPopMatrix(); angle+=0.01; glFlush(); } int main(int argc, char **argv) { glutInit(&argc, argv); glutCreateWindow(""); glutDisplayFunc(display); glutIdleFunc(display); glutMainLoop(); }
滑鼠控制旋轉\\
#include <GL/glut.h> float angle=0; void display() { glClear(GL_COLOR_BUFFER_BIT); glPushMatrix(); glRotatef( angle,0,1,0.5); glBegin(GL_POLYGON); glColor3f(1,0,0); glVertex3f(0.1,0.1,0.8); glVertex3f(-0.1,0.1,0.8); glVertex3f(-0.1,-0.1,0.8); glVertex3f(0.1,-0.1,0.8); glEnd(); glBegin(GL_POLYGON); glColor3f(1,1,0); glVertex3f(0.1,0.1,-0.8); glVertex3f(-0.1,0.1,-0.8); glVertex3f(-0.1,-0.1,-0.8); glVertex3f(0.1,-0.1,-0.8); glEnd(); glBegin(GL_QUAD_STRIP); glColor3f(1,1,2); glVertex3f(0.1,0.1,0.8); glVertex3f(0.1,0.1,-0.8); glVertex3f(-0.1,0.1,0.8); glVertex3f(-0.1,0.1,-0.8); glVertex3f(-0.1,-0.1,0.8); glVertex3f(-0.1,-0.1,-0.8); glVertex3f(0.1,-0.1,0.8); glVertex3f(0.1,-0.1,-0.8); glEnd(); glPopMatrix(); angle +=0.01; glFlush(); } int oldX=0; //宣告一個座標 void motion(int x,int y) { angle +=(x-oldX); //利用新座標去舊的得新的角度 oldX=x; } int main(int argc,char **argv) { glutInit(&argc,argv); glutCreateWindow("02160102flight"); glutDisplayFunc(display); glutIdleFunc(display); glutMotionFunc(motion); //移動函示 glutMainLoop(); }
沒有留言:
張貼留言