亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

c語言實現多線程動畫程序示例

2020-01-26 15:32:36
字體:
來源:轉載
供稿:網友

該程序是利用opengl圖形庫與fmod音頻庫寫的一個簡單3d動畫程序。該程序在vs下運行良好,若缺少相關dll文件請確認已配制fmod與opengl庫。

mixmodel.cpp

復制代碼 代碼如下:

// mixmodel.cpp : 定義控制臺應用程序的入口點。
//

#include "stdafx.h"

//定義一個線程
DWORD WINAPI SoundProc(
 LPVOID LPVIDEOPARAMETERS);
//光照變量
GLfloat  whiteLight[] = { 0.2f, 0.2f, 0.2f, 1.0f };
GLfloat  sourceLight[] = { 0.8f, 0.8f, 0.8f, 1.0f };
GLfloat  lightPos[] = { 0.0f, 0.0f, 0.0f, 1.0f };
//貼圖變量
GLuint toTextures[4];
char* szFiles[4] = {"bcb.bmp","sun.bmp","earth.bmp","moon.bmp"};


//聲音引擎查錯函數
void ERRCHECK(FMOD_RESULT result)
{
 if(result != FMOD_OK)
 {
  printf("FMOD error!(%d) %s/n",result,FMOD_ErrorString(result));
  //exit(-1);
 }
}

void Initial()
{

 AUX_RGBImageRec* Image[4];
 int i;
 glEnable(GL_DEPTH_TEST); // 啟用深度測試
 glFrontFace(GL_CCW);  // 指定逆時針繞法表示多邊形正面

 glEnable(GL_CULL_FACE);  // Do not calculate inside of jet

 // Enable lighting
 glEnable(GL_LIGHTING);

 // Setup and enable light 0
 glLightModelfv(GL_LIGHT_MODEL_AMBIENT,whiteLight);
 glLightfv(GL_LIGHT0,GL_DIFFUSE,sourceLight);
 glLightfv(GL_LIGHT0,GL_POSITION,lightPos);
 glEnable(GL_LIGHT0);

 // Enable color tracking
 glEnable(GL_COLOR_MATERIAL);

 // Set Material properties to follow glColor values
 glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
 glClearColor(0.0f, 0.0f, 0.0f, 1.0f ); //背景為黑色

 

 glGenTextures(4, toTextures);
 for(i=0;i<4;i++)
 {
 // Load environment map
    glBindTexture(GL_TEXTURE_2D, toTextures[i]);
 Image[i] = auxDIBImageLoadA(szFiles[i]);
 glTexImage2D(GL_TEXTURE_2D, 0, 3, Image[i]->sizeX, Image[i]->sizeY, 0, GL_RGB , GL_UNSIGNED_BYTE, Image[i]->data);

    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
 glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
 }

    glEnable(GL_TEXTURE_2D);
 glEnable(GL_TEXTURE_GEN_S);
    glEnable(GL_TEXTURE_GEN_T);
 glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
    glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);

}

void drawsphere()
{
 static float fElect1 = 0.0f;
 glTranslatef(0.0f, 0.0f, -250.0f); 
 glBindTexture(GL_TEXTURE_2D,toTextures[1]);
 glDisable(GL_LIGHTING);
 // 繪制紅色的太陽模型
 //glShadeModel(GL_SMOOTH);
 glColor3f(1.0f, 0.0f, 0.0f);
 glutSolidSphere(12.0f, 100, 100);
 glEnable(GL_LIGHTING);
 // 當前繪制顏色變為藍色
 //glShadeModel(GL_FLAT);
 glBindTexture(GL_TEXTURE_2D,toTextures[2]);
 glColor3f(0.0f, 0.0f, 1.0f);

 //繪制地球
 //保存當前的模型視圖矩陣
 //glPushMatrix();
 glLightfv(GL_LIGHT0,GL_POSITION,lightPos);
 glRotatef(fElect1, 0.0f, 1.0f, 0.0f);//繞y軸旋轉一定的角度
 glTranslatef(90.0f, 0.0f, 0.0f);//平移一段距離
 glutSolidSphere(9.0f, 100, 100);

 glBindTexture(GL_TEXTURE_2D,toTextures[3]);
 glColor3f(1.0f,1.0f,0.0f);
 glRotatef(fElect1*4, 0.0f, 1.0f, 0.0f);
 glTranslatef(40.0f, 0.0f, 0.0f);
 glutSolidSphere(5.0f, 100, 100);
 // 恢復矩陣
 glPopMatrix();
 // 增加旋轉步長
 fElect1 += 5.0f;
 if(fElect1 > 360.0f) fElect1 = 5.0f;
}

void ChangeSize(int w, int h)
{
 if(h == 0) h = 1;

 // 設置視區尺寸
    glViewport(0, 0, w, h);

 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();

 // 設置修剪空間
 GLfloat fAspect;
 fAspect = (float)w/(float)h;
 gluPerspective(45.0, fAspect, 1.0, 500.0);
/*
     if (w <= h)
   glOrtho (-nRange, nRange, nRange*h/w, -nRange*h/w, -nRange*2.0f, nRange*2.0f);
  else
   glOrtho (-nRange*w/h, nRange*w/h, nRange, -nRange, -nRange*2.0f, nRange*2.0f);
*/
 glMatrixMode(GL_MODELVIEW);
 glLoadIdentity();
}


void RenderScene(void)
{
 // 旋轉的角度
 

 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

 // 重置模型視圖矩陣
 //glMatrixMode(GL_MODELVIEW);
 glMatrixMode(GL_PROJECTION);

    glPushMatrix();
    glLoadIdentity();
    gluOrtho2D(0.0f, 1.0f, 0.0f, 1.0f);
    glMatrixMode(GL_MODELVIEW);
 glBindTexture(GL_TEXTURE_2D, toTextures[0]);
 glDisable(GL_TEXTURE_GEN_S);
    glDisable(GL_TEXTURE_GEN_T);
 glDepthMask(GL_FALSE);
 glBegin(GL_QUADS);
        glTexCoord2f(0.0f, 0.0f);
        glVertex2f(0.0f, 0.0f);

        glTexCoord2f(1.0f, 0.0f);
        glVertex2f(1.0f, 0.0f);

        glTexCoord2f(1.0f, 1.0f);
        glVertex2f(1.0f, 1.0f);

        glTexCoord2f(0.0f, 1.0f);
        glVertex2f(0.0f, 1.0f);
    glEnd();
 glMatrixMode(GL_PROJECTION);
    glPopMatrix();
 //glLoadIdentity();
 //
    glMatrixMode(GL_MODELVIEW);
 glEnable(GL_TEXTURE_GEN_S);
    glEnable(GL_TEXTURE_GEN_T);
    glDepthMask(GL_TRUE);
 //glLoadIdentity();
 glPushMatrix();
 //將圖形沿z軸負向移動
 drawsphere();
 

 glutSwapBuffers();
}

void TimerFunc(int value)
{
    glutPostRedisplay();
    glutTimerFunc(100, TimerFunc, 1);
}

//背景音樂的調度函數
void bcsound()
{
FMOD_RESULT result;
FMOD::System *system;
FMOD::Channel *channel;
result = FMOD::System_Create(&system);             // 創造FMOD的系統內核對象
ERRCHECK(result);

result = system->setSpeakerMode(FMOD_SPEAKERMODE_5POINT1);     // 設置5.1聲道模式
ERRCHECK(result);

result = system->setSoftwareChannels(100);         // 調整軟件混合
ERRCHECK(result);

result = system->setHardwareChannels(32);     // 調整硬件混合
ERRCHECK(result);

result = system->init(200, FMOD_INIT_NORMAL, 0);         // 初始化FMOD,音量大小為200
ERRCHECK(result);

FMOD::Sound *sound;
result = system->createSound("P115.ogg", FMOD_DEFAULT, 0, &sound);         //載入磁盤文件到內存,(全部載入后返回)
ERRCHECK(result);

unsigned int lenms;
result = sound->getLength(&lenms,FMOD_TIMEUNIT_MS);
ERRCHECK(result);

result = system->playSound(FMOD_CHANNEL_FREE, sound, false, &channel);//播放
ERRCHECK(result);
Sleep(lenms);

result = system->createSound("End Theme.mp3", FMOD_DEFAULT, 0, &sound);         //載入磁盤文件到內存,(全部載入后返回)
ERRCHECK(result);
result = sound->getLength(&lenms,FMOD_TIMEUNIT_MS);
ERRCHECK(result);

result = system->playSound(FMOD_CHANNEL_FREE, sound, false, &channel);//播放
ERRCHECK(result);
Sleep(lenms);

system->release();//釋放
}

//動畫功能函數
void graph(int argc, char* argv[])
{
 glutInit(&argc, argv);
 glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
 glutInitWindowSize(600,350);
 glutCreateWindow("日月地模型示例");
 glutReshapeFunc(ChangeSize);
 glutDisplayFunc(RenderScene);
    glutTimerFunc(500, TimerFunc, 1);
 Initial();
 glutMainLoop();

}

int main(int argc, char* argv[])
{
 HANDLE hThread1;
 hThread1 = CreateThread(NULL,0,SoundProc,NULL,0,NULL);
 CloseHandle(hThread1);

 graph(argc,argv);
 Sleep(3000);

    return 0;
}

DWORD WINAPI SoundProc(
 LPVOID LPVIDEOPARAMETERS)
{
 bcsound();
 return 0;
}



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品98久久久久久中文字幕| 91久久精品国产91久久性色| 亚洲天堂男人天堂| 日韩精品中文字幕在线| 亚洲男人av在线| 亚洲激情自拍图| 精品少妇一区二区30p| 狠狠色狠狠色综合日日五| 97视频人免费观看| 91亚洲精品一区二区| 久久九九热免费视频| 国产99视频精品免视看7| 免费91麻豆精品国产自产在线观看| 久久久91精品国产一区不卡| 韩国精品美女www爽爽爽视频| 亚洲一区中文字幕在线观看| 精品久久久久久中文字幕| 国产女精品视频网站免费| 日韩成人久久久| 欧美性猛交xxx| 欧美大片在线免费观看| 欧美第一淫aaasss性| 91av国产在线| 久久精品久久久久久国产 免费| 中文字幕视频一区二区在线有码| 国产在线观看不卡| 在线视频一区二区| 成人久久一区二区| 成人国产精品久久久| 日韩精品中文字幕久久臀| 成人国产精品av| 亚洲国产精品久久久久秋霞蜜臀| 国产亚洲人成网站在线观看| 精品久久久国产精品999| 91免费精品视频| 91久久久久久| 国产精品久久久久久av下载红粉| 在线看国产精品| 欧美激情a∨在线视频播放| 国产精品吹潮在线观看| 亚洲天堂男人的天堂| 国产亚洲视频中文字幕视频| 国产精品久久久亚洲| 亚洲欧洲午夜一线一品| 欧美精品videossex性护士| 韩国精品久久久999| 国产性色av一区二区| 日韩风俗一区 二区| 欧美成人午夜免费视在线看片| 久久精品国产亚洲| 亚洲精品国产成人| 欧美日韩国产二区| 成人黄色短视频在线观看| 另类天堂视频在线观看| 91在线视频成人| 国产丝袜一区二区| 亚洲国产成人精品久久久国产成人一区| 性视频1819p久久| 日韩欧美国产一区二区| 国产成人av网址| 亚洲电影免费在线观看| 亚洲色图激情小说| 亚洲欧美日韩久久久久久| 欧美在线激情视频| 欧美日产国产成人免费图片| 成人福利网站在线观看11| 色偷偷偷亚洲综合网另类| 欧美巨乳在线观看| 亚洲偷欧美偷国内偷| 日韩av在线网页| 成人精品一区二区三区| 免费97视频在线精品国自产拍| 久久久亚洲精选| 91精品国产综合久久久久久蜜臀| 国产欧美日韩专区发布| 国产亚洲xxx| 日韩免费av一区二区| 日韩在线视频观看| 欧美日韩人人澡狠狠躁视频| 久久久久久久久久久久av| 黑人巨大精品欧美一区二区免费| 亚洲国产精品成人va在线观看| 欧美日韩美女在线观看| 高清在线视频日韩欧美| 欧美激情精品久久久久久黑人| 成人h视频在线| 日本韩国在线不卡| 欧美日韩亚洲91| 国产日韩欧美在线观看| 人九九综合九九宗合| 亚洲第一中文字幕在线观看| 国内精品在线一区| 在线电影欧美日韩一区二区私密| 国产精品三级美女白浆呻吟| 高清欧美性猛交| 久久综合色影院| 亚洲午夜av电影| 国产精品久久久久影院日本| 日本免费久久高清视频| 精品国产欧美一区二区五十路| 91系列在线观看| 日韩国产欧美区| 亚洲国产高清高潮精品美女| 欧美激情影音先锋| 中文欧美在线视频| 91久久综合亚洲鲁鲁五月天| 国产情人节一区| 色婷婷av一区二区三区久久| 欧美激情视频网站| 91精品久久久久| 国产精品久久久久久婷婷天堂| 日韩欧美主播在线| 国产啪精品视频| 成人h片在线播放免费网站| 欧美高清在线视频观看不卡| 在线色欧美三级视频| 国产亚洲精品久久久优势| 亚洲丁香婷深爱综合| 国产亚洲精品久久久久动| 精品久久久久久中文字幕一区奶水| 久久久久中文字幕2018| 北条麻妃在线一区二区| 精品成人国产在线观看男人呻吟| 欧美一区二粉嫩精品国产一线天| 欧美成人免费全部观看天天性色| 国自在线精品视频| 亚洲第一精品福利| 国产在线一区二区三区| 国产成人精品亚洲精品| 免费91麻豆精品国产自产在线观看| 欧美日韩在线另类| 亚洲第一视频在线观看| 97色在线观看| 国产玖玖精品视频| 亚洲丝袜在线视频| 精品国偷自产在线视频99| 亚洲精品720p| 日本不卡视频在线播放| 精品视频在线观看日韩| 国产精品视频永久免费播放| 欧美成人免费视频| 国产欧美日韩高清| 欧美成人免费在线观看| 国产精品视频不卡| 亚洲精品久久久一区二区三区| 欧美精品少妇videofree| 欧美高清激情视频| 久久久久一本一区二区青青蜜月| 国产精品网站视频| 操人视频在线观看欧美| 亚洲情综合五月天| 国产有码一区二区| 国产在线观看精品一区二区三区| 亚洲国产精品va在线看黑人| 欧美性xxxx极品hd满灌| 欧美麻豆久久久久久中文| 欧美最猛性xxxxx(亚洲精品)| 国产午夜精品视频免费不卡69堂| 亚洲r级在线观看| 日韩欧美成人区| 国产精品久久久久久久一区探花| 日韩禁在线播放| 国产精品专区h在线观看| 亚洲影影院av|