記得加main()
1 - 開啟CodeBlocks ,新增OpenGL專案,File ➝ New ➝ Project
2 - 選取GLUT Project ➝ Go ➝ Next
3 - 點選三個點,點選目錄在桌面,加上專案名字 week14-1_timer,Next ➝ Finish\
2 - 選取GLUT Project ➝ Go ➝ Next
3 - 點選三個點,點選目錄在桌面,加上專案名字 week14-1_timer,Next ➝ Finish\
4 - 點選 week14-1_timer ➝ Sources ➝ main.c,刪除所有程式碼,並輸入
include <GL/glut.h>
float angle=0;
void
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 += 90;
glutPostRedisplay();
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week14");
glutDisplayFunc(display);
glutTimerFunc(2000, timer, 0);
glutMainLoop();
}
week14-2_timer_play
#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);
glutPopMatrix();
glutSwapBuffers();
}
void timer(int t)
{
glutTimerFunc(500,timer,t+1);
angle+=90;
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);
glutkeyboardFunc(keyboard);
///glutTimerFunc(2000,timer,0);
glutMainLoop();
}
week14-3_timer_alpha_interpolation
#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);
glutPopMatrix();
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);
glutkeyboardFunc(keyboard);
glutMouseFunc(Mouse);
glutMotionFunc(Motion);
///glutTimerFunc(2000,timer,0);
glutMainLoop();
}
沒有留言:
張貼留言