2021年4月26日 星期一

𝔍𝔒𝔗𝔇-week10

 

電腦圖學_week10

2021/04/26(一)

  今日的上課內容:
  1. 改檔名為libglut32.a
  2. 引入函式
  3. 發出聲音
  4. 用滑鼠鍵盤播放音樂
  5. 用mp3播放音樂
今日的程式碼:
        ///發出聲音
  • #include <windows.h>
  • int main()
  • {
  •     PlaySound("do.wav",NULL,SND_SYNC);
  • }
       ///發出多個聲音
       ///SND_ASYNC 不等待同步
  • #include <windows.h>
  • #include <stdio.h>
  • int main()
  • {
  •     char c;
  •     while (1)
  •     {
  •         c = getchar();
  •         if(c=='1')
  •             PlaySound("do.wav",NULL,SND_ASYNC);
  •         else if (c=='2')
  •             PlaySound("re.wav",NULL,SND_ASYNC);
  •         else if (c=='3')
  •              PlaySound("mi.wav",NULL,SND_ASYNC);
  •         else if (c=='4')
  •              PlaySound("fa.wav",NULL,SND_ASYNC);
  •         else if (c=='5')
  •              PlaySound("so.wav",NULL,SND_ASYNC);
  •         else if (c=='6')
  •              PlaySound("Journey - Separate Ways (Worlds Apart) (Official Video - 1983).wav",NULL,SND_ASYNC);
  •     }

  • }
///播放多音檔
  • #include <windows.h>
  • #include <GL/glut.h>
  • void display()
  • {
  •     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  •     glutSolidTeapot(0.3);
  •     glutSwapBuffers();
  • }
  • void keyboard(unsigned char key , int x, int y)///TODO2
  • {
  •     if(key == '1') PlaySound("do.wav", NULL, SND_ASYNC);
  •     if(key == '2') PlaySound("re.wav", NULL, SND_ASYNC);
  •     if(key == '3') PlaySound("mi.wav", NULL, SND_ASYNC);
  • }
  • int main(int argc, char **argv)
  • {
  •     glutInit( &argc, argv);
  •     glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH);
  •     glutCreateWindow("week10 sound");

  •     glutDisplayFunc(display);
  •     glutKeyboardFunc(keyboard);///TODO2
  •     glutMainLoop();
  • }
///滑鼠加鍵盤
  • #include <windows.h>
  • #include <GL/glut.h>
  • void display()
  • {
  •     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  •     glutSolidTeapot(0.3);
  •     glutSwapBuffers();
  • }
  • void keyboard(unsigned char key , int x, int y)///TODO2
  • {
  •     if(key == '1') PlaySound("Journey - Separate Ways (Worlds Apart) (Official Video - 1983).wav", NULL, SND_ASYNC);
  •     if(key == '2') PlaySound("re.wav", NULL, SND_ASYNC);
  •     if(key == '3') PlaySound("mi.wav", NULL, SND_ASYNC);
  • }
  • void mouse(int button, int state, int x,int y)
  • {
  •     if(state == GLUT_DOWN) PlaySound("do.wav", NULL, SND_ASYNC);
  • }
  • int main(int argc, char **argv)
  • {
  •     glutInit( &argc, argv);
  •     glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH);
  •     glutCreateWindow("week10 sound");

  •     glutDisplayFunc(display);
  •     glutKeyboardFunc(keyboard);///TODO2
  •     glutMouseFunc(mouse);///TODO4
  •     glutMainLoop();
  • }
///用mp3播放音樂
  • #include <windows.h>
  • #include <GL/glut.h>
  • #include "CMP3_MCI.h"
  • CMP3_MCI mp3;
  • void display()
  • {
  •     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  •     glutSolidTeapot(0.3);
  •     glutSwapBuffers();
  • }
  • void keyboard(unsigned char key , int x, int y)///TODO2
  • {
  •     if(key == '1') PlaySound("Journey - Separate Ways (Worlds Apart) (Official Video - 1983).wav", NULL, SND_ASYNC);
  •     if(key == '2') PlaySound("re.wav", NULL, SND_ASYNC);
  •     if(key == '3') PlaySound("mi.wav", NULL, SND_ASYNC);
  • }
  • void mouse(int button, int state, int x,int y)
  • {
  •     if(state == GLUT_DOWN) PlaySound("do.wav", NULL, SND_ASYNC);
  • }
  • int main(int argc, char **argv)
  • {
  •     mp3.Load("music.mp3");
  •     mp3.Play();
  •     glutInit( &argc, argv);
  •     glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH);
  •     glutCreateWindow("week10 sound");

  •     glutDisplayFunc(display);
  •     glutKeyboardFunc(keyboard);///TODO2
  •     glutMouseFunc(mouse);///TODO4
  •     glutMainLoop();
  • }
///茶壺打光
  • #include <GL/glut.h>
  • void display()
  • {
  •     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  •     glutSolidTeapot(0.3);
  •     glutSwapBuffers();
  • }
  • const GLfloat light_ambient[]  = { 0.0f, 0.0f, 0.0f, 1.0f };
  • const GLfloat light_diffuse[]  = { 1.0f, 1.0f, 1.0f, 1.0f };
  • const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
  • const GLfloat light_position[] = { 2.0f, 5.0f, 5.0f, 0.0f };

  • const GLfloat mat_ambient[]    = { 0.7f, 0.7f, 0.7f, 1.0f };
  • const GLfloat mat_diffuse[]    = { 0.8f, 0.8f, 0.8f, 1.0f };
  • const GLfloat mat_specular[]   = { 1.0f, 1.0f, 1.0f, 1.0f };
  • const GLfloat high_shininess[] = { 100.0f };

  • int main(int argc, char *argv[])
  • {
  •     glutInit(&argc, argv);
  •     glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
  •     glutCreateWindow("week10 light");


  •     glEnable(GL_DEPTH_TEST);
  •     glDepthFunc(GL_LESS);

  •     glEnable(GL_LIGHT0);
  •     glEnable(GL_NORMALIZE);
  •     glEnable(GL_COLOR_MATERIAL);
  •     glEnable(GL_LIGHTING);

  •     glLightfv(GL_LIGHT0, GL_AMBIENT,  light_ambient);
  •     glLightfv(GL_LIGHT0, GL_DIFFUSE,  light_diffuse);
  •     glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
  •     glLightfv(GL_LIGHT0, GL_POSITION, light_position);

  •     glMaterialfv(GL_FRONT, GL_AMBIENT,   mat_ambient);
  •     glMaterialfv(GL_FRONT, GL_DIFFUSE,   mat_diffuse);
  •     glMaterialfv(GL_FRONT, GL_SPECULAR,  mat_specular);
  •     glMaterialfv(GL_FRONT, GL_SHININESS, high_shininess);
  •     glutDisplayFunc(display);
  •     glutMainLoop();
  • }
////茶壺不同位置打光
  • #include <GL/glut.h>
  • void display()
  • {
  •     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  •     glutSolidTeapot(0.3);
  •     glutSwapBuffers();
  • }
  • const GLfloat light_ambient[]  = { 0.0f, 0.0f, 0.0f, 1.0f };
  • const GLfloat light_diffuse[]  = { 1.0f, 1.0f, 1.0f, 1.0f };
  • const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
  • const GLfloat light_position[] = { 2.0f, 5.0f, -5.0f, 0.0f };

  • const GLfloat mat_ambient[]    = { 0.7f, 0.7f, 0.7f, 1.0f };
  • const GLfloat mat_diffuse[]    = { 0.8f, 0.8f, 0.8f, 1.0f };
  • const GLfloat mat_specular[]   = { 1.0f, 1.0f, 1.0f, 1.0f };
  • const GLfloat high_shininess[] = { 100.0f };

  • int main(int argc, char *argv[])
  • {
  •     glutInit(&argc, argv);
  •     glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
  •     glutCreateWindow("week10 light");


  •     glEnable(GL_DEPTH_TEST);
  •     glDepthFunc(GL_LESS);

  •     glEnable(GL_LIGHT0);
  •     glEnable(GL_NORMALIZE);
  •     glEnable(GL_COLOR_MATERIAL);
  •     glEnable(GL_LIGHTING);

  •     glLightfv(GL_LIGHT0, GL_AMBIENT,  light_ambient);
  •     glLightfv(GL_LIGHT0, GL_DIFFUSE,  light_diffuse);
  •     glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
  •     glLightfv(GL_LIGHT0, GL_POSITION, light_position);

  •     glMaterialfv(GL_FRONT, GL_AMBIENT,   mat_ambient);
  •     glMaterialfv(GL_FRONT, GL_DIFFUSE,   mat_diffuse);
  •     glMaterialfv(GL_FRONT, GL_SPECULAR,  mat_specular);
  •     glMaterialfv(GL_FRONT, GL_SHININESS, high_shininess);
  •     glutDisplayFunc(display);
  •     glutMainLoop();
  • }

今日成果:
                                            ⬆️多音檔播放


                                            ⬆️多音檔播放
                                            ⬆️茶壺打光
                                            ⬆️茶壺不同位置打光

沒有留言:

張貼留言

Week18期末作業(橘貓的跳舞熊熊)

 期末作業(橘貓的跳舞熊熊) 影片: https://youtu.be/R89tptMaQZw 程式碼: #include <opencv/highgui.h> #include <opencv/cv.h> #include <GL/glut.h...