openal教程.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
openal教程

openal教程(一) 简介 ?? 欢迎来到OPENAL的世界!OPENAL一直在不断的创新,几乎没有一个API能达到 她的全部潜能。一个很大的原因是因为hardware加速建立在特殊的版卡上。然而, Creative Labs是APENAL的主要支持者,同时也是最大声卡厂商之一。OPENAL的另 一个主要支持者LOKI。 ?? OPENAL不是商业产品,那样做限制了她的发展。我只知道在PC游戏中用OPENAL。 OPENAL有许多的潜能,有许多的声音库工作在最底层的hardware上。但OPENAL的 设计者经过无数的测试使她成为一个高级的API。她的风格是自由的,不同的编码 风格和hardware部件将充分运用她的功能。有OPENGL编程精练的人将很快掌握OPEN AL。OPENAL有建立3D环境音效的能力。 ?? OPENAL是very cool,她是一个非常清晰的API并且能融入你的代码。你将做出 很COOL的音效,下面让我们进入COOL COOL的OPENAL世界。 ?? #include conio.h ?? #include stdlib.h ?? #include al/al.h ?? #include al/alc.h ?? #include al/alu.h ?? #include al/alut.h ?? 你会发现再OPENAL头和OPENGL头的定义上有许多的相似之处。除了“al.h,al u.h,alut.h与”gl.h,glu.h,glut.h相似,还增加了一个alc.h.ALC( AUDIO LIBRARY CONTEXT)处理声音通过不同的平台,她也处理你在几个窗口下共 享设备的环境。 ?? // 存储声音数据 ALuint Buffer; // 用于播放声音 ALuint Source; ?? 这是程序处理结构的初始化。在OPENAL中三种不同的结构,所有关于声音播放和 声音数据存储在一个内存中,源(source)是指向放声音的空间。明白源是非常 的重要。源只播放内存中的背景声音数据。源也给出了特殊的属性如位置和速度。 ?? 第三个对象是听者,用户就是那唯一的听者。听者属性属于源属性,决定如何 听声音。例如,不同位置将决定声音的速度。 ?? // 源声音的位置 ALfloat SourcePos[] = { 0.0, 0.0, 0.0 }; // 源声音的速度 ALfloat SourceVel[] = { 0.0, 0.0, 0.0 }; // 听者的位置 ALfloat ListenerPos[] = { 0.0, 0.0, 0.0 }; // 听者的速度 ALfloat ListenerVel[] = { 0.0, 0.0, 0.0 }; // 听者的方向 (first 3 elements are at, second 3 are up) ALfloat ListenerOri[] = { 0.0, 0.0, -1.0,?? 0.0, 1.0, 0.0 }; ?? 在上面的代码中,我们定义了源和听者对象的位置和速度。这些数组是基于笛 卡儿坐标的矢量。你能很容易用结构或类做相同的事情。 ?? ALboolean LoadALData() { ???? // 载入变量. ???? ALenum format; ???? ALsizei size; ???? ALvoid* data; ???? ALsizei freq; ???? ALboolean loop; ?? 在这里我们建立一个函数用于从一个文件中载入声音数据。变量用于存储适合 我们的ALUT信息。 ?? // 载入WAV数据 ???? alGenBuffers(1, Buffer); ???? if (alGetError() != AL_NO_ERROR) ???????? return AL_FALSE; ???? alutLoadWAVFile(wavdata/FancyPants.wav, format, data, size, freq, loop); ???? alBufferData(Buffer, format, data, size, freq); ???? alutUnloadWAV(format, data, size, freq); ?? 函数alGenBufers用于建立对象内存并把他们存储在我们定义的变量中。然后判断 数据是否存储。 ?? ALUT库为我们打开文件,提供我们建立内存所需的信息,并且在我们归属所有 数据到内存后,她将处理这些数据。 ?? // 捆绑源 ??

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档