Week 14
(1)主題:檔案
(3)主題:複習
(4)作業:機器人擺動作
開glut專案
下載wav檔(wav檔要放在freeglut/bin資料夾裡)
#include <GL/glut.h>
#include <mmsystem.h>///Now (1)
#include <stdio.h>///printf()
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("bazooka.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("week 14 timer");
glutDisplayFunc(display);
glutTimerFunc(3000, timer, 0);///NOW timer!!!!
glutMainLoop();
}
(二)動畫
#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();
}
沒有留言:
張貼留言