2019年5月23日 星期四

ˊ_>ˋ_week14

(1)主題:計時器Timer

#include <GL/glut.h>
#include <mmsystem.h>///Now (1)
#include <stdio.h>///printf()
float angle = 0;

void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glutSolidTeapot( 0.3 );
    glutSwapBuffers();
 
}
void timer(int t)///NOW timer!!!!
{
    glutTimerFunc(1000, timer, t+1 );///NOW timer!!!! 起床要播下一個鬧鐘
   /// printf("timer(t) 的 t是 %d\n", t);///順便印一下現在的t是多少
   /// PlaySoundA("mi.wav", NULL, SND_ASYNC);///Now (2) ///NOW timer!!!!

}
int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutInitWindowSize(500,500);
    glutCreateWindow("week14");

    glutDisplayFunc(display);

    glutMainLoop();}


-------------------------------------------------------------------------------------------
#include <GL/glut.h>
#include <mmsystem.h>///Now (1)
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)///NOW timer!!!!
{
    /// 1000 ms = 1 sec,  30 ms = 1/33 sec , 33 fps
    glutTimerFunc(30, timer, t+1 );///NOW timer!!!! 起床要播下一個鬧鐘
    angle += 1;
    glutPostRedisplay();///系統重繪畫面
}
int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutInitWindowSize(500,500);///變大了
    glutCreateWindow("week 14 timer");

    glutDisplayFunc(display);
    glutTimerFunc(3000, timer, 0);///NOW timer!!!!

    glutMainLoop();

}

(2)主題:內插公式






(3)主題:動畫

#include <GL/glut.h>

#include <mmsystem.h>///Now (1)

float angle=0;

float nowX=0;///NOW2

void display()

{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix();

        ///glRotatef(angle, 0,0,1);

        glTranslatef(nowX, 0, 0);///NOW2

        glutSolidTeapot( 0.3 );

    glPopMatrix();

    glutSwapBuffers();

}

void timer(int t)///NOW timer!!!!

{

    /// 1000 ms = 1 sec,  30 ms = 1/33 sec , 33 fps

    glutTimerFunc(30, timer, t+1 );///NOW timer!!!! 起床要播下一個鬧鐘

    float alpha = (t%33) / 33.0;///NOW2 alpha 內插

    nowX = alpha* 1 + (1-alpha)* -1 ;///NOW2


    angle += 1;

    glutPostRedisplay();///系統重繪畫面

}

int main(int argc, char**argv)

{

    glutInit(&argc, argv);

    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);

    glutInitWindowSize(500,500);///變大了

    glutCreateWindow("week 14 timer");


    glutDisplayFunc(display);

    glutTimerFunc(1000, timer, 0);///NOW timer!!!!


    glutMainLoop();

}

















-->把反藍的文件放到我們的專案檔裡,以後就可以這樣打包使用了












用notepad++打開,改裡面Working dir,把雙引號內容改成 "."








沒有留言:

張貼留言