2021年4月26日 星期一

阿米君の電腦圖學小筆記_Week10

☆本週內容☆

播放音檔
程式碼:
#include<windows.h>
int main( )
{
    PlaySound("pig.wav",NULL,SND_SYNC);
}
   ///檔案放置(in...)執行目錄
  ///C:\Usere\Adminstator\Dosktop\freeglut\bin


播放音檔(do re mi fa so)


程式碼:
#include<windows.h>
int main( )
{
    PlaySound("do.wav",NULL,SND_SYNC);
    PlaySound("re.wav",NULL,SND_SYNC);
    PlaySound("mi.wav",NULL,SND_SYNC);
    PlaySound("fa.wav",NULL,SND_SYNC);
    PlaySound("so.wav",NULL,SND_SYNC);
}


太慢啦~進階!!(do re mi fa so)
程式碼:
#include<windows.h>
#include<stdio.h>
int main( )
{
     char a,b,c,d,e;
     while(1)
     {
          c=getchar( );
          if(c=='1')PlaySound("do.wav",NULL,SND_ASYNC);  ///按數字鍵撥放對應聲音
          if(c=='2')PlaySound("re.wav",NULL,SND_ASYNC);
          if(c=='3')PlaySound("mi.wav",NULL,SND_ASYNC);
          if(c=='4')PlaySound("fa.wav",NULL,SND_ASYNC);
          if(c=='5')PlaySound("so.wav",NULL,SND_ASYNC);
     }
///SND_SYNC"等待"同步,播完再繼續  V.S  SND_ASYNC"不等待"同步,馬上下一行
}

再進階!!鍵盤版(do re mi fa so)
程式碼:
#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)  ///鍵盤輸入 撥放音檔
{
     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);
     if(key=='4')PlaySound("fa.wav",NULL,SND_ASYNC);
     if(key=='5')PlaySound("so.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);
     glutMainLoop( );
}

再進階!!滑鼠版(do re mi fa so)
程式碼:
#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)
{
    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);
    if(key=='4')PlaySound("fa.wav",NULL,SND_ASYNC);
    if(key=='5')PlaySound("so.wav",NULL,SND_ASYNC);
}

void mouse(int button,int state,int x,int y)
{
    if(state==GLUT_DOWN) PlaySound("shot.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);
    glutMouseFunc(mouse);
    glutMainLoop( );
}

加碼!完整音樂(do re mi fa so)
程式碼:
#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)
{
    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);
    if(key=='4')PlaySound("fa.wav",NULL,SND_ASYNC);
    if(key=='5')PlaySound("so.wav",NULL,SND_ASYNC);
}

void mouse(int button,int state,int x,int y)
{
    if(state==GLUT_DOWN) PlaySound("shot.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);
    glutMouseFunc(mouse);
    glutMainLoop( );
}

基礎打光練習
程式碼:
#include <windows.h>
#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( );
}

基礎打光練習
程式碼:
更改-

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 };

沒有留言:

張貼留言

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

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