今日第一個程式
#include <GL/glut.h>
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glRotatef(angle,0,0,1);
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
void timer(int t)
{
glutTimerFunc(500,timer,t+1);
angle+=50;
glutPostRedisplay();
}
int main(int argc,char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week14");
glutDisplayFunc(display);
glutTimerFunc(2000,timer,0);
glutMainLoop();
}
今日第二個程式
#include <GL/glut.h>
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glRotatef(angle,0,0,1);
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
void timer(int t)
{
glutTimerFunc(500,timer,t+1);
angle+=50;
glutPostRedisplay();
}
void keyboard(unsigned char key,int x,int y)
{
glutTimerFunc(0,timer,0);
}
int main(int argc,char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week14");
glutDisplayFunc(display);
glutTimerFunc(2000,timer,0);
glutMainLoop();
}
今日第三個程式
#include <GL/glut.h>
float angle=0, oldAngle=0, newAngle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glRotatef(angle,0,0,1);
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
void timer(int t)
{
if(t<100) glutTimerFunc(50, timer, t+1);
float alpha = t/100.0;
angle = newAngle*alpha + (1-alpha) * oldAngle;
glutPostRedisplay();
}
void motion(int x,int y)
{
angle = x;
glutPostRedisplay();
}
void mouse(int button, int state, int x, int y)
{
if(state==GLUT_DOWN) oldAngle = x;
if(state==GLUT_UP) newAngle = x;
glutPostRedisplay();
}
void keyboard(unsigned char key, int x,int y)
{
glutTimerFunc(0,timer, 0);
}
int main(int argc,char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week14");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMotionFunc(motion);
glutTimerFunc(2000,timer,0);
glutMainLoop();
}
沒有留言:
張貼留言