openal 基础知识4
二函数
1. buffer函数
void alGenBuffers(ALsizei n /* buffer数*/, ALuint * buffers /* buffer ID数组*/);
void alDeleteBuffers(ALsizei n /* buffer数*/, ALuint * buffers /* buffer ID 数组*/);
ALboolean alIsBuffer(ALuint buffer);
// 为buffer填充数据
void alBufferData(ALuint buffer, ALenum format/*声音格式*/,const ALvoid *data/*数据地址*/
, ALsizei size/*数据字节数*/,ALsizei freq/*声音频率*/);
声音格式:AL_FORMAT_[MONO8, MONO16, STEREO8, STEREO16]
// 设置buffer的浮点数属性
void alBufferf (ALuintbuffer, ALenum param/*属性名*/,ALfloat value/*属性值*/);
void alBuffer3f (ALuintbuffer, ALenum param, ALfloat v1, ALfloat v2, ALfloat v3);
void alBufferfv (ALuintbuffer, ALenum param, ALfloat *values);
// 设置buffer的整数属性
void alBufferi (ALuintbuffer, ALenum param, ALint value);
void alBuffer3i (ALuintbuffer, ALenum param, ALint v1, ALint v2, ALint v3);
void alBufferiv (ALuintbuffer, ALenum param, ALint *values);
// 获取buffer属性值
void alGetBufferf(ALuint buffer, ALenum param, ALfloat *value);
void alGetBuffer3f(ALuint buffer, ALenum param, ALfloat *v1, ALfloat *v2, ALfloat *v3);
void alGetBufferfv(ALuint buffer, ALenum param, ALfloat *values);
void alGetBufferi(ALuint buffer, ALenum param, ALint *value);
void alGetBuffer3i(ALuint buffer, ALenum param, ALint *v1, ALint *v2, ALint *v3);
void alGetBufferiv(ALuint buffer, ALenum param, ALint *values);
2. source函数
void alGenSources(ALsizei n, ALuint *sources);
void alDeleteSources(ALsizei n, ALuint *sources);
ALboolean alIsSource(ALuint source);
void alSourcef (ALuintsource, ALenum param, ALfloat value);
void alSource3f (ALuintsource, ALenum param, ALfloat v1, ALfloat v2, ALfloat v3);
void alSourcefv (ALuintsource, ALenum param, ALfloat *values);
void alSourcei (ALuintsource, ALenum param, ALint value);
void alSource3i (ALuintsource, ALenum param, ALint v1, ALint v2, ALint v3);
void alSourceiv (ALuintsource, ALenum param, ALint *values);
void alGetSourcef(ALuint source, ALenum param, ALfloat *value);
void alGetSource3f(ALuint source, ALenum param, ALfloat *v1, ALfloat *v2, ALfloat *v3);
void alGetSourcefv(ALuint source, ALenum param, ALfloat *values);
void alGetSourcei(ALuint source, ALenum param, ALint *value);
void alGetSource3i(ALuint source, ALenum param, ALint *v1, ALint *v2, ALint *v3);
void alGetSourceiv(ALuint source, ALenum param, ALint *values);
void alSourcePlay(ALuint source);
void alSourcePause(ALuint source);
void alSourceStop(ALuint source);
void alSourceRewind(ALuint source); //停止source并将其状态设置为AL_INITIAL
void alSourcePlayv(ALsizei n, ALuint *sources); //播放一系列source
void alSourcePausev(ALsizei n, ALuint *sources);
void alSourceStopv(ALsizei n, ALuint *sources);
void alSourceRewindv(ALsizei n, ALuint *sources);
voidalSourceQueueBuffers (ALuint source, ALsizei n, ALuint *buffers); //alGetSourcei(source,
AL_BUFFERS_PROCESSED,&x)获取已经处理了的buffer数
voidalSourceUnqueueBuffers (ALuint source, ALsizei n, ALuint *buffers);
3. listener函数
void alListenerf(ALenum param, ALfloat value);
void alListener3f(ALenum param, ALfloat v1, ALfloat v2, ALfloat v3);
void alListenerfv(ALenum param, ALfloat *values);
void alListeneri(ALenum param, ALint value);
void alListener3i(ALenum param, ALint v1, ALint v2, ALint v3);
void alListeneriv(ALenum param, ALint *values);
void alGetListenerf(ALenum param, ALfloat *value);
void alGetListener3f(ALenum param, ALfloat *v1, ALfloat *v2, ALfloat *v3);
void alGetListenerfv(ALenum param, ALfloat *values);
void alGetListeneri(ALenum param, ALint *value);
void alGetListener3i(ALenum param, ALint *v1, ALint *v2, ALint *v3);
void alGetListeneriv(ALenum param, ALint *values);
4. 状态函数
AL_DOPPLER_FACTOR f 全局多普勒系数
AL_SPEED_OF_SOUND f 声音的每秒传播速度
AL_DISTANCE_MODEL i 距离模型枚举值
void alEnable (ALenumcapability); //使能某项功能
void alDisable (ALenumcapability);
ALboolean alIsEnabled(ALenum capability);
// FIXME:这一堆不知道是干吗的。。。
ALboolean alGetBoolean(ALenum param);
ALdouble alGetDouble(ALenum param);
ALfloat alGetFloat(ALenum param);
ALint alGetInteger(ALenum param);
void alGetBooleanv(ALenum param, ALboolean *data);
void alGetDoublev(ALenum param, ALdouble *data);
void alGetFloatv(ALenum param, ALfloat *data);
void alGetIntegerv(ALenum param, ALint *data);
const Alchar *alGetString (ALenum param); // param为
AL_VENDOR,AL_VERSION, AL_RENDERER, AL_EXTENSIONS
void alDopplerFactor(ALfloat value); //设置多普勒因子,默认1.0
void alSpeedOfSound(ALfloat value); //默认343.3
void alDistanceModel(ALenum value); //设置OpenAL的距离模型
AL_INVERSE_DISTANCE//倒数距离
AL_INVERSE_DISTANCE_CLAMPED//默认值
AL_LINEAR_DISTANCE //线性距离
AL_LINEAR_DISTANCE_CLAMPED
AL_EXPONENT_DISTANCE//指数距离
AL_EXPONENT_DISTANCE_CLAMPED
AL_NONE
//这两个参数是计算距离中用的,公式参考原版文档,总之越近增益越大
AL_REFERENCE_DISTANCE//参考距离
AL_ROLLOFF_FACTOR //衰减因子
5. 错误函数
ALenum alGetError(ALvoid);
6. extension函数
ALbooleanalIsExtensionPresent (const ALchar *extname); //extension有效时返回AL_TRUE
void * alGetProcAddress(const ALchar *fname); //返回指定的函数指针或者NULL
ALenum alGetEnumValue(const ALchar *ename); //返回ename描述的ALenum或者NULL
7. context函数
ALC_FREQUENCY l 输出频率
ALC_MONO_SOURCES l 请求的单声道source数
ALC_STEREO_SOURCES l 请求的双声道source数
ALC_REFRESH l context运行的刷新率
ALC_SYNC i 同步context的标志位
ALContext *alcCreateContext (ALCdevice *device, ALCint *attrlist);
attrlist:上述属性集的指针,可以是NULL或以0结尾的列表,列表中每一项是属性名和属性值组成的数对
ALCbooleanalcMakeContextCurrent (ALCcontext *context);
void alcProcessContext(ALCcontext *context); //通知指定context开始运行
void alcSuspendContext(ALCcontext *context); //这两个组合使用可以使状态的改变迅速生效
void alcDestroyContext(ALCcontext *context); //关闭非当前的context
ALCcontext*alcGetCurrentContext (ALCvoid);
ALCdevice*alcGetContextDevice (ALCcontext *context);
8. context错误函数
ALCenum alcGetError(ALCdevice *device);
9. contextdevice函数
ALCdevice*alcOpenDevice (const ALCchar *devicename);
ALCbooleanalcCloseDevice (ALCdevice *device);
10. contextextension函数
ALCbooleanalcIsExtensionPresent (ALCdevice *device, const ALCchar *extName);
void* alcGetProcAddress(ALCdevice *device, const ALCchar *funcName);
ALCenum alcGetEnumValue(ALCdevice *device, const ALCchar *enumName);
11. context状态函数
const ALCchar *alcGetString (ALCdevice *device, ALenum param);
属性: ALC_DEFAULT_DEVICE_SPECIFIER
ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER
ALC_DEVICE_SPECIFIER
ALC_CAPTURE_DEVICE_SPECIFIER
ALC_EXTENSIONS
void alcGetIntegerv(ALCdevice *device, ALCenum param, ALCsizei size, ALCint *data);
param: ALC_MAJOR_VERSION,ALC_MINOR_VERSION,
ALC_ATTRIBUTES_SIZE,ALC_ALL_ATTRIBUTES
size: 传入的目标buffer的大小
12. context 捕捉函数
ALCdevice*alcCaptureOpenDevice (const ALCchar *devicename, ALCuint frequency, ALCenum format,ALCsizei buffersize);
frequency: 捕捉的频率
ALCbooleanalcCaptureCloseDevice (ALCdevice *device);
void alcCaptureStart(ALCdevice *device); //启动捕捉,数据存入一个内部环形buffer,buffer大小是opendevice时候传入。通过alcGetIntegerv和ALC_CAPTURE_SAMPLES可以获得当前有效采样数,然后可用alcCaptureSamples获得已经采样的样本。
void alcCaptureStop(ALCdevice *device);
void alcCaptureSamples(ALCdevice *device, ALCvoid *buffer, ALCsizei samples);
openal 基础知识4的更多相关文章
- openal 基础知识3
四创新科技extension (Creative Labs'Extensions) 创新科技为OpenAL添加了多个extensions,许多都利用了他们声卡的特性. “Enumerate All”e ...
- openal 基础知识2
三枚举扩展包(enumeration extension,“ALC_ENUMERATION_EXT”) 开发者可以通过这个extension得到一个字符串列表,区分不同的渲染/捕捉设备.OpenALr ...
- openal 基础知识
原文地址:http://blog.csdn.net/woker/article/details/8687380 一简介 OpenAL抽象出三种基本对象:buffers(缓冲区).sources(源). ...
- .NET面试题系列[1] - .NET框架基础知识(1)
很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...
- RabbitMQ基础知识
RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...
- Java基础知识(壹)
写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...
- selenium自动化基础知识
什么是自动化测试? 自动化测试分为:功能自动化和性能自动化 功能自动化即使用计算机通过编码的方式来替代手工测试,完成一些重复性比较高的测试,解放测试人员的测试压力.同时,如果系统有不份模块更改后,只要 ...
- [SQL] SQL 基础知识梳理(一)- 数据库与 SQL
SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...
- [SQL] SQL 基础知识梳理(二) - 查询基础
SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...
随机推荐
- Hadoop2.5.2源码编译及导入Eclipse
前言:由于官网提供的64位hadoop是没有编译的,所以当我们用到64位的hadoop时,需要在自己的64位linux系统上编译hadoop源码.另外,要想在eclipse里查看hadoop源码,修改 ...
- [svc]lnmp一键安装脚本(含有np与mysql分离)
基于lanny一键安装包:(含lnmp所需软件及配置文件) 安装nginx: wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliy ...
- awstat分析nginx日志
awstat分析nginx日志 http://lxw66.blog.51cto.com/5547576/1323712 server{ listen ; server_name localhost; ...
- [sh]shell小结
一 判断 -d 测试是否为目录.-f 判断是否为文件. -s 判断文件是否为空 如果不为空 则返回0,否则返回1 -e 测试文件或目录是否存在. -r 测试当前用户是否有权限读取. -w 测试当前用户 ...
- 简单了解一下c编译过程
大一的时候,学习c语言,用的是VC6.0.用了1年多,到后来了解了Linux,知道了gcc编译器,开始使用gcc Hello.c -o a.out 这样的命令进行编译.后来又学了gcc的一些其他的命令 ...
- 日期时间函数(1)-time()&gmtime()&strftime()&localtime()
◆time() 取得当前时间.此函数会返回从公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数.如果参数t为非空指针的话, 此函数也会将返回值存到t指针所指的内存. 成功则返回秒数 ...
- <实战> 通过分析Heap Dump 来了解 Memory Leak ,Retained Heap,Shallow Heap
引入: 最近在和别的团队的技术人员聊天,发现很多人对于堆的基本知识都不太熟悉,所以他们不能很好的检测出memory leak问题,这里就用一个专题来讲解如何通过分析heap dump文件来查找memo ...
- Django使用表单操作数据库
前言 目标:实现Django通过表单的GET方式和POST方式提交数据,并添加到数据库 . OS:win10 x64 Django:1.11.8 Python: 3.6 本文完整示例:完整示例: 虽然 ...
- Object.defineProperty()属性设置介绍
注释: 本文宅自https://segmentfault.com/a/1190000007434923,仅学习方便,没有任何商业用途 对象是由多个名/值对组成的无序的集合.对象中每个属性对应任意类型的 ...
- c++之——template模板函数
为了实现与数据类型无关的编程,模板应运而生: #include<iostream> #include<string.h> using namespace std; templa ...