運鏡
#include <GL/glut.h> float eyeX=0,eyeY=0,eyeZ=-200; void display() { GLfloat pos[]={0,0,200,0}; glLightfv(GL_LIGHT0,GL_POSITION,pos); glEnable(GL_LIGHT0); glEnable(GL_NORMALIZE); glEnable(GL_LIGHTING); glLightfv(GL_LIGHT0,GL_POSITION,pos); glEnable(GL_LIGHT0); glEnable(GL_NORMALIZE); glEnable(GL_LIGHTING); glLightfv(GL_LIGHT0,GL_POSITION,pos); glEnable(GL_LIGHT0); glEnable(GL_NORMALIZE); glEnable(GL_LIGHTING); glLightfv(GL_LIGHT0,GL_POSITION,pos); glEnable(GL_LIGHT0); glEnable(GL_NORMALIZE); glEnable(GL_LIGHTING); glLightfv(GL_LIGHT0,GL_POSITION,pos); glEnable(GL_LIGHT0); glEnable(GL_NORMALIZE); glEnable(GL_LIGHTING); glEnable(GL_DEPTH_TEST); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix(); gluLookAt(eyeX,eyeY,eyeZ,0,0,0,0,1,0); glPushMatrix(); glutSolidTeapot(100); glPopMatrix(); glPopMatrix(); glFlush(); } void motion(int x,int y) { eyeX=x-400; eyeY=300-y; glutPostRedisplay( ); } void reshape(int w,int h){ glViewport(0,0,w,h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(90,w/h,0.001,10000); glMatrixMode(GL_MODELVIEW); glLoadIdentity();}void timer(int t){ glutTimerFunc(20,timer,t+1); eyeX+=2; if(eyeX>300) eyeY+=4; glutPostRedisplay();}int main(int argc,char **argv){ glutInit(&argc,argv); glutInitWindowSize(800,600); glutCreateWindow("3D"); glutDisplayFunc(display);
glutReshapeFunc(reshape); glutMotionFunc(motion); glutTimerFunc(0,timer,0); glutMainLoop();}
|
沒有留言:
張貼留言