☆本週內容☆
播放音檔
程式碼:
#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 };








沒有留言:
張貼留言