2023年5月17日 星期三

binhun-week14

使用timer計時器的技巧 使用參數來設定

#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)///你的timer()函式 做對應動作

{

    glutTimerFunc(500,timer,t+1);///設定下一個鬧鐘

    angle += 90;///增加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();

}

 



開新專案



按下任何鍵就會播放

開新專案
加上
glutMouseFunc(mouse);
glutMotionFunc(motion);
float alpha = t/100.0;///變float數介於0.00-1.00之間
angle = newAngle*alpha + (1-alpha) * oldAngle;///內插公式
新增float angle=0,oldAngle=0,newAngle=0;///宣告變數
void mouse(int button,int state,int x,int y)
{
    if(state==GLUT_DOWN) oldAngle = x;///按下去
    if(state == GLUT_UP) newAngle = x;///放開來
    glutPostRedisplay();///重設畫面      
   }
void motion(int x,int y)
{
    angle = x;///即時更新角度
    glutPostRedisplay();///重設畫面
}
glutTimerFunc(50,timer,t+1);///改成50
按下空白鍵會播放動畫

沒有留言:

張貼留言