<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>

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

            時間:2025-10-29 21:09:43 C語言

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

              如何用c語言實現多線程動畫程序呢?想要了解的朋友,以下是為大家分享的c語言實現多線程動畫程序的范例,供大家參考借鑒,歡迎瀏覽!

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

              mixmodel.cpp

              復制代碼 代碼如下:

              /pic/p>

              /pic/p>

              #include "stdafx.h"

              /pic/p>

              DWORD WINAPI SoundProc(

              LPVOID LPVIDEOPARAMETERS);

              /pic/p>

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

              /pic/p>

              GLuint toTextures[4];

              char* szFiles[4] = {"bcb.bmp","sun.bmp","earth.bmp","moon.bmp"};

              /pic/p>

              void ERRCHECK(FMOD_RESULT result)

              {

              if(result != FMOD_OK)

              {

              printf("FMOD error!(%d) %sn",result,FMOD_ErrorString(result));

              /pic/p>

              }

              }

              void Initial()

              {

              AUX_RGBImageRec* Image[4];

              int i;

              glEnable(GL_DEPTH_TEST);/pic/p>

              glFrontFace(GL_CCW);/pic/p>

              glEnable(GL_CULL_FACE);/pic/p>

              /pic/p>

              glEnable(GL_LIGHTING);

              /pic/p>

              glLightModelfv(GL_LIGHT_MODEL_AMBIENT,whiteLight);

              glLightfv(GL_LIGHT0,GL_DIFFUSE,sourceLight);

              glLightfv(GL_LIGHT0,GL_POSITION,lightPos);

              glEnable(GL_LIGHT0);

              /pic/p>

              glEnable(GL_COLOR_MATERIAL);

              /pic/p>

              glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);

              glClearColor(0.0f, 0.0f, 0.0f, 1.0f );/pic/p>

              glGenTextures(4, toTextures);

              for(i=0;i<4;i++)

              {

              /pic/p>

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

              /pic/p>

              /pic/p>

              glColor3f(1.0f, 0.0f, 0.0f);

              glutSolidSphere(12.0f, 100, 100);

              glEnable(GL_LIGHTING);

              /pic/p>

              /pic/p>

              glBindTexture(GL_TEXTURE_2D,toTextures[2]);

              glColor3f(0.0f, 0.0f, 1.0f);

              /pic/p>

              /pic/p>

              /pic/p>

              glLightfv(GL_LIGHT0,GL_POSITION,lightPos);

              glRotatef(fElect1, 0.0f, 1.0f, 0.0f);/pic/p>

              glTranslatef(90.0f, 0.0f, 0.0f);/pic/p>

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

              /pic/p>

              glPopMatrix();

              /pic/p>

              fElect1 += 5.0f;

              if(fElect1 > 360.0f)fElect1 = 5.0f;

              }

              void ChangeSize(int w, int h)

              {

              if(h == 0)h = 1;

              /pic/p>

              glViewport(0, 0, w, h);

              glMatrixMode(GL_PROJECTION);

              glLoadIdentity();

              /pic/p>

              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)

              {

              /pic/p>

              glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

              /pic/p>

              /pic/p>

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

              /pic/p>

              /pic/p>

              glMatrixMode(GL_MODELVIEW);

              glEnable(GL_TEXTURE_GEN_S);

              glEnable(GL_TEXTURE_GEN_T);

              glDepthMask(GL_TRUE);

              /pic/p>

              glPushMatrix();

              /pic/p>

              drawsphere();

              glutSwapBuffers();

              }

              void TimerFunc(int value)

              {

              glutPostRedisplay();

              glutTimerFunc(100, TimerFunc, 1);

              }

              /pic/p>

              void bcsound()

              {

              FMOD_RESULT result;

              FMOD::System *system;

              FMOD::Channel *channel;

              result = FMOD::System_Create(&system); /pic/p>

              ERRCHECK(result);

              result = system->setSpeakerMode(FMOD_SPEAKERMODE_5POINT1); /pic/p>

              ERRCHECK(result);

              result = system->setSoftwareChannels(100); /pic/p>

              ERRCHECK(result);

              result = system->setHardwareChannels(32); /pic/p>

              ERRCHECK(result);

              result = system->init(200, FMOD_INIT_NORMAL, 0); /pic/p>

              ERRCHECK(result);

              FMOD::Sound *sound;

              result = system->createSound("P115.ogg", FMOD_DEFAULT, 0, &sound); /pic/p>

              ERRCHECK(result);

              unsigned int lenms;

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

              ERRCHECK(result);

              result = system->playSound(FMOD_CHANNEL_FREE, sound, false, &channel);/pic/p>

              ERRCHECK(result);

              Sleep(lenms);

              result = system->createSound("End Theme.mp3", FMOD_DEFAULT, 0, &sound); /pic/p>

              ERRCHECK(result);

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

              ERRCHECK(result);

              result = system->playSound(FMOD_CHANNEL_FREE, sound, false, &channel);/pic/p>

              ERRCHECK(result);

              Sleep(lenms);

              system->release();/pic/p>

              }

              /pic/p>

              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;

              }

            【c語言實現多線程動畫程序】相關文章:

            C語言程序的實現12-06

            C語言程序介紹03-01

            c語言鏈接程序08-16

            c語言入門的經典程序03-22

            C語言程序的段03-15

            C語言程序試題10-29

            C語言程序分析10-04

            c語言入門經典程序02-19

            C語言經典程序題10-04

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p>

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院