资源简介
非常好的opengl程序,是学习游戏编程的最后借鉴。程序里有详细注释,可以学好的opengl的很多知识。内含检测碰撞算法,还有声音文件 难得的程序代码

代码片段和文件信息
#include “CDSound.h“
CDSound::CDSound()
{
// TODO: add construction code here
// Place all significant initialization in InitInstance
HRESULT hRes;
m_lpDirectSound=NULL;
m_lpDSoundBuffer=NULL;
m_bLoop=false;
hRes = ::DirectSoundCreate(0 &m_lpDirectSound 0);//创建DirectSound对象;
if( hRes != DS_OK )
return;
}
CDSound::CDSound(HWND hWndchar* filenamebool bPlaybool bLoop)
{
// TODO: add construction code here
// Place all significant initialization in InitInstance
HRESULT hRes;
m_lpDirectSound=NULL;
m_lpDSoundBuffer=NULL;
m_bLoop=bLoop;
hRes = ::DirectSoundCreate(0 &m_lpDirectSound 0);//创建DirectSound对象;
if( hRes != DS_OK )
return;
m_bLoop=bLoop;
SetCooperativeLevel(hWnd);
//设置声音设备优先级别为“NORMAL“;
OpenSoundFile(filename);
if(bPlay)
Play();
}
CDSound::~CDSound()
{
// TODO: add construction code here
// Place all significant initialization in InitInstance
}
void CDSound::OpenSoundFile(char* filename)
{
// TODO: add construction code here
// Place all significant initialization in InitInstance
LPVOID lpPtr1; //指针1;
LPVOID lpPtr2; //指针2;
HRESULT hResult;
DWORD dwLen1dwLen2;
LPVOID m_pMemory; //指向WAVE文件的指针
LPWAVEFORMATEX m_pFormat=NULL; //LPWAVEFORMATEX类型指针;
LPVOID m_pData=NULL; //指向语音数据块的指针;
DWORD m_dwSize=0; //WAVE文件中语音数据块的长度;
FILE *filein;
DWORD dwSize;//存放WAV文件长度;
//打开sound.wav文件;
filein=fopen(filename “rt“);
//fseek(): 将 filein 所指文件的位置指针移动到以 0 为基址,
// SEEK_END 为偏移量的位置
fseek(filein0SEEK_END); //移动到WAVE文件中存放文件长度的地方
dwSize = ftell(filein); //获取WAVE文件长度
fseek(filein0SEEK_SET); //定位到打开的WAVE文件文件头;
int j = ftell(filein); // j ??????
//为m_pMemory分配内存,用来存放WAVE文件中的数据;
m_pMemory = GlobalAlloc (GMEM_FIXED dwSize);
fread(m_pMemory 1 dwSize filein); //读取文件中的数据;
fclose(filein);
LPDWORD pdwpdwEnd;
DWORD dwRiffdwType dwLength;
//首先清空指针和变量以备使用
if (m_pFormat) //格式块指针
m_pFormat = NULL;
if (m_pData) //数据块指针类型:LPBYTE
m_pData = NULL;
if (m_dwSize) //数据长度类型:DWORD
m_dwSize = 0;
pdw = (DWORD *) m_pMemory;
dwRiff = *pdw++;
dwLength = *pdw++;
dwType = *pdw++;
if (dwRiff != MAKEFOURCC (‘R‘ ‘I‘ ‘F‘ ‘F‘))
return ;//判断文件头是否为“RIFF“字符;
if (dwType != MAKEFOURCC (‘W‘ ‘A‘ ‘V‘ ‘E‘))
return ;//判断文件格式是否为“WAVE“;
//寻找格式块数据块位置及数据长度
pdwEnd = (DWORD *)((BYTE *) m_pMemory+dwLength -4);
bool m_bend=false;
while ((pdw < pdwEnd)&&(!m_bend))
//pdw文件没有指到文件末尾并且没有获取到声音数据时继续;
{
dwType = *pdw++;
dwLength = *pdw++;
switch (dwType)
{
case MAKEFOURCC(‘f‘ ‘m‘ ‘t‘ ‘ ‘)://如果为“fmt“标志;
if (!m_pFormat)//获取LPWAVEFORMATEX结构数据;
{
if (dwLength < sizeof (WAVEFORMAT))
return ;
m_pFormat = (LPWAVEFORMATEX) pdw;
}
break;
case MAKEFOURCC(‘d‘ ‘a‘ ‘t‘ ‘a‘)://如果为“data“标志;
if (!m_pData || !m_dwSize)
{
m_pData = (LPBYTE) pdw;//得到指向声音数据块的指针;
m_dwSize = dwLe
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2011-09-23 19:39 opengl 编写的cs程序\
文件 4937 2004-11-28 19:33 opengl 编写的cs程序\CDSound.cpp
文件 918 2004-12-01 18:34 opengl 编写的cs程序\CDSound.h
文件 0 2004-02-28 00:46 opengl 编写的cs程序\CIDevice.cpp
文件 358 2004-02-28 00:44 opengl 编写的cs程序\CIDevice.h
文件 20019 2005-01-14 17:08 opengl 编写的cs程序\CMap.cpp
文件 1950 2004-12-01 18:43 opengl 编写的cs程序\CMap.h
目录 0 2011-09-21 21:38 opengl 编写的cs程序\Debug\
文件 19445 2011-09-21 21:07 opengl 编写的cs程序\Debug\CDSound.obj
文件 0 2011-09-21 21:07 opengl 编写的cs程序\Debug\CDSound.sbr
文件 30233 2011-09-21 21:07 opengl 编写的cs程序\Debug\CMap.obj
文件 0 2011-09-21 21:07 opengl 编写的cs程序\Debug\CMap.sbr
文件 2409472 2011-09-21 21:07 opengl 编写的cs程序\Debug\FiWorld.bsc
文件 270432 2011-09-21 21:07 opengl 编写的cs程序\Debug\FiWorld.exe
文件 406232 2011-09-21 21:07 opengl 编写的cs程序\Debug\FiWorld.ilk
文件 68177 2011-09-21 21:07 opengl 编写的cs程序\Debug\FiWorld.obj
文件 5424808 2011-09-21 21:07 opengl 编写的cs程序\Debug\FiWorld.pch
文件 533504 2011-09-21 21:07 opengl 编写的cs程序\Debug\FiWorld.pdb
文件 0 2011-09-21 21:07 opengl 编写的cs程序\Debug\FiWorld.sbr
文件 173056 2011-09-21 21:07 opengl 编写的cs程序\Debug\vc60.idb
文件 94208 2011-09-21 21:07 opengl 编写的cs程序\Debug\vc60.pdb
文件 43639 2005-01-16 09:57 opengl 编写的cs程序\FiWorld.cpp
文件 4347 2004-11-28 21:56 opengl 编写的cs程序\FiWorld.dsp
文件 633 2004-02-28 02:09 opengl 编写的cs程序\FiWorld.dsw
文件 115712 2011-09-21 21:08 opengl 编写的cs程序\FiWorld.ncb
文件 51712 2011-09-21 21:08 opengl 编写的cs程序\FiWorld.opt
文件 1639 2011-09-21 21:07 opengl 编写的cs程序\FiWorld.plg
目录 0 2011-09-21 21:38 opengl 编写的cs程序\Gfx\
文件 49208 2000-09-22 17:23 opengl 编写的cs程序\Gfx\Boden.bmp
文件 12344 2004-02-26 20:47 opengl 编写的cs程序\Gfx\circle.bmp
文件 66614 2000-10-31 15:31 opengl 编写的cs程序\Gfx\desertbk.bmp
............此处省略35个文件信息
相关资源
- OpenGL参考手册
- ccs官方软件及安装
-
st
yles 引文样式语言( CSL ) 引文样 - CCS中如何生成LIB文件-并在另外CCS项目
- CCS5.05.1可使用的license
- TI CCS V5.4 安装步骤及破解文件
- CCSv9链接及安装流程详解
- ecshop微信支付含手机版ectouch
- 基于MCS_51单片机的工业屏柜散热方案
- 清翔电子MCS51开发板资料_新版 01_开发
- MCS_51单片机与8255A的接口设计
- Fabrication and all-optical poling characteris
- 基于MVC模式的会员管理系统
- CSMA/CD等动画演示加源代码
- MFC程序-碰撞的小球
- web班级网站设计代码
- Adobe Illustrator CS5原版amtlib.dll文件
- Qt Creator opengl实现四元数鼠标控制轨迹
- OpenGL文档,api大全,可直接查询函数
- opengl轮廓字体源代码
- MFC读三维模型obj文件
- 利用OpenGL写毛笔字算法
- MFC中OpenGL面和体的绘制以及动画效果
- 基于OPENGL的光线跟踪源代码368758
- VC 实现三维旋转(源码)
- 2440 cs8900a 网卡驱动程序
- CS Selective Color Correct
- 自编用openGL实现3D分形树,分形山
- FIR低通滤波器 ccs运行环境
- cs5530的SPI程序
评论
共有 条评论