c语语言言实实现现多多线线程程动动画画程程序序示示例例
该程序是利用opengl图形库与fmod音频库写的一个简 3d动画程序。该程序在vs下运行良好,若缺少相关dll文件请确认已配制f
mod与opengl库。
mixmodel.cpp
代码如下: 复制代码
// mixmodel.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx .h"
//定义一个线程
DWORD WIN PI SoundProc(
LPVOID LPVIDEOP R MET ERS);
//光照变量
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()
{
UX_ RGBImageRec* Image[4];
int i;
glEnable(GL_ DEPT H_T EST); // 启用深度测试
glFrontFace(GL_CCW); // 指定逆时针绕法表示多边形正面
glEnable(GL_CULL_ F CE); // Do not calculate inside of j et
// Enable lighting
glEnable(GL_ LIGHTING);
// Setup and enable light 0
glLightModelfv(GL_ LIGHT_ MODEL_ MBIENT,whiteLight);
glLightfv(GL_ LIGHT0,GL_ DIFFUSE,sourceLight);
glLightfv(GL_ LIGHT0,GL_ POSITION,lightPos);
glEnable(GL_ LIGHT0);
// Enable color tracking
glEnable(GL_COLOR_ M T ERI L);
// Set Material properties to follow glColor values
glColorMaterial(GL_ FRONT, GL_ MBIENT_ ND_ DIFFUSE);
glClearColor(0.0f, 0.0f, 0.0f, 1.0f ); //背景为黑色
glGenTextures(4, toTextures);
for(i=0;i<4;i++)
{
// Load environment map
glBindTexture(GL_T EXT URE_2D, toTextures[i]);
Image[i] = auxDIBImageLoad (szFiles[i]);
glTexImage2D(GL_T EXT URE_2D, 0, 3, Ima