2021年4月26日 星期一

缺錢week10

 #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();

}

音效



光線


#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();


    return EXIT_SUCCESS;

}



那早安晚安的甜

#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");


    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();

}


橘貓(電圖小筆記_week10)

本周主題:聲音 (音效、音樂),光 Lighting

聲音 (音效、音樂)

!!注意!!音檔記得要放在freeglut的bin資料夾內!!

1.撥放單個音檔

#include <windows.h>
#include <stdio.h>//標準輸出輸入
int main()
{
   PlaySound("so.wav",NULL,SND_SYNC);//等待音檔播完再撥下一個
}
2.撥放多個音檔
char a;
 while(1){
        a=getchar();//讀入字串
        if(a=='1')PlaySound("do.wav",NULL,SND_ASYNC);
        if(a=='2')PlaySound("re.wav",NULL,SND_ASYNC);
        if(a=='3')PlaySound("mi.wav",NULL,SND_ASYNC);
        if(a=='4')PlaySound("fa.wav",NULL,SND_ASYNC);
        if(a=='5')PlaySound("so.wav",NULL,SND_ASYNC);
    }
if(a=='1')PlaySound("do.wav",NULL,SND_ASYNC);
如果a等於1播放do其他以此類推
SND_SYNC//等待音檔播完再撥下一個
SND_ASYNC//直接撥放

2-1結合圖形

#include <windows.h>
#include <GL/glut.h>
static 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_RGB | GLUT_DOUBLE | GLUT_DEPTH);
   glutCreateWindow("GLUT10");//視窗名
   glutDisplayFunc(display);//顯示
   glutKeyboardFunc(KEYBOARD);//鍵盤
   glutMouseFunc(Mouse);//滑鼠
   glutMainLoop();//讓他一直呼叫
}

3.使用CMP3_MCI mp3在背景播放mp3檔


光 Lighting

#include <windows.h>

#include <stdio.h>

int main()

{

    char c;

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

        if(c=='6') PlaySound("la.wav",NULL,SND_ASYNC);

        if(c=='7') PlaySound("si.wav",NULL,SND_ASYNC);

        if(c=='8') PlaySound("do2.wav",NULL,SND_ASYNC);

        if(c=='9') PlaySound("star.wav",NULL,SND_ASYNC);

    }

}

#include <GL/glut.h>

static int slices = 16;

static int stacks = 16;

static void display(void)

{

    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_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("GLUT Shapes");

    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();

}

再改一下數值就可以改變打光的位置了!


阿米君の電腦圖學小筆記_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 };

04/26 08160413 電腦圖學

老師今天教我們打亮的程式碼

你要出多少_week10

先去下載音樂檔 開啟檔案 


不過記得要把音樂檔放在bin 不然會不能播出音樂

   下面是播出音樂的程式碼

#include <windows.h>
int main()
{
    PlaySound("re.wav",NULL,SND_SYNC);
}

///SND_SYNC是要等待同步 播完再繼續


也可以利用按數字按鍵,彈出一首簡單的曲子
(下面是程式碼)

#include <windows.h>
#include <stdio.h>
int main()
{
    ///PlaySound("re.wav",NULL,SND_SYNC);
    char c;
    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);
    }
}


加入一個茶壺
(下面是程式碼)
#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);
}
int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week10 sound");


    glutDisplayFunc(display);
    glutKeyboardFunc(keyboard);
    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)
{
    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);
}
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();


}


要把CMP3_MCI.h放在這個專案檔,然後把自己要播的音樂放在bin
(下面是程式碼)
#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);
}
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>
#include "CMP3_MCI.h"
CMP3_MCI mp3;
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 };

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


    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);
    glutKeyboardFunc(keyboard);
    glutMouseFunc(mouse);
    glutMainLoop();


}


改變框框的數字可以改變打光方向
(下面是程式碼)
#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();
}
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 };

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


    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);
    glutKeyboardFunc(keyboard);
    glutMouseFunc(mouse);
    glutMainLoop();


}


MCUCG_Week10

 1.播聲音

2.按鍵發聲

3.滑鼠點擊發聲

4發'光



#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();
}
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 };

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);
    if(key == '6') PlaySound("la.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");

    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);
    glutKeyboardFunc(keyboard);
    glutMouseFunc(mouse);
    glutMainLoop();

}






現在開始斗內Week10

 Week10

1-1.播聲音

#include<windows.h>

int main()

{

    PlaySound("pig.wav",NULL,SND_SYNC);

}


1-2.變音
#include<windows.h>
#include<stdio.h>
int main()
{
    char a;
    while(1){
        a=getchar();
        if(a=='1')
        PlaySound("do.wav",NULL,SND_ASYNC);
        if(a=='2')
        PlaySound("re.wav",NULL,SND_ASYNC);
    }
}
1-3不用ENTER版
#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_RGB | GLUT_DOUBLE | GLUT_DEPTH);///顯示模式
    glutCreateWindow("HI");///開視窗
    glutDisplayFunc(display);///顯示函式
    glutKeyboardFunc(keyboard);
    glutMainLoop();///主迴圈,卡住他
}
1-4滑鼠
void mouse(int button,int state,int x,int y)
{
    if(state==GLUT_DOWN)PlaySound("pig.wav",NULL,SND_ASYNC);
}
1-5常駐
#include "CMP3_MCI.h"
CMP3_MCI mp3;

mp3.Load("music.mp3");
    mp3.Play();
2-1打光
#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_RGB | GLUT_DOUBLE | GLUT_DEPTH);///顯示模式
    glutCreateWindow("HI");///開視窗
    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();///主迴圈,卡住他
}

2-2數值一調變立體
















 今天要學的是音效跟打光,因為音效比較簡單所以先學音效。

打開glut後把全部的程式碼給刪掉,然後打上圖片中的程式碼就可以播放音效。

記得音效擋要把它存在freeglut裡的bin裡面

透過getchar的城市可以讓按按鍵之後才播音效,if可以在按下指定按鍵之後才播

接著第三個程式碼,因為用剛才的方法的話會需要按下enter才能夠播放聲音,所以改用keyboard函式,讓他再按下數字鍵的時候就可以直接播出音效

#include <windows.h>
#include <GL/glut.h>///(0)使用GLUT外掛
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清空

    glutSolidTeapot(0.3);///實心茶壺

    glutSwapBuffers();///交換兩倍的buffers
}
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);

}
int main(int argc, char ** argv)///以前是int main()
{
    glutInit(&argc, argv);///(1)GLUT初始設定
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);///(2)顯示模式
    glutCreateWindow("08160360_陳彥瑜");///開窗

    glutDisplayFunc(display);///(4)等一下要顯示的函式
    glutKeyboardFunc(keyboard);
    glutMainLoop();///(5)主要迴圈
}
 除了按下鍵盤可以發出聲音以外,按下滑鼠也可以發出聲音,用和剛才類似的方法,寫一個mouse的函式,記得只要按下滑鼠的時候發出聲音

#include <windows.h>
#include <GL/glut.h>///(0)使用GLUT外掛
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清空

    glutSolidTeapot(0.3);///實心茶壺

    glutSwapBuffers();///交換兩倍的buffers
}
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);

}
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)///以前是int main()
{
    glutInit(&argc, argv);///(1)GLUT初始設定
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);///(2)顯示模式
    glutCreateWindow("08160360_陳彥瑜");///開窗

    glutDisplayFunc(display);///(4)等一下要顯示的函式
    glutKeyboardFunc(keyboard);
    glutMouseFunc(mouse);
    glutMainLoop();///(5)主要迴圈
}
c語言指認式wav檔,所以要用外掛程式來讓他能夠播放mp3等檔案,先呼叫外掛檔案(記得要放在和專案檔同位置的資料夾裡)然後load之後play即可撥放音樂

#include <windows.h>
#include <GL/glut.h>///(0)使用GLUT外掛
#include "CMP3_MCI.h"///todo5
CMP3_MCI mp3;///todo5 宣告一個物性變數
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清空

    glutSolidTeapot(0.3);///實心茶壺

    glutSwapBuffers();///交換兩倍的buffers
}
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);

}
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)///以前是int main()
{
    mp3.Load("music.mp3");///todo5
    mp3.Play();///todo5
    glutInit(&argc, argv);///(1)GLUT初始設定
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);///(2)顯示模式
    glutCreateWindow("08160360_陳彥瑜");///開窗

    glutDisplayFunc(display);///(4)等一下要顯示的函式
    glutKeyboardFunc(keyboard);
    glutMouseFunc(mouse);
    glutMainLoop();///(5)主要迴圈
}
然後是打光,在glut的基本程式碼當中就已經有打光的程式了,所以只要把關鍵的部分複製下來就可以用了。
(藍字為複製的程式碼)
#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...