📄 openal.pas
字号:
// Used by DSPROPERTY_EAXBUFFER_FLAGS
// TRUE: value is computed automatically - property is an offset
// FALSE: value is used directly
//
// Note: The number and order of flags may change in future EAX versions.
// To insure future compatibility, use flag defines as follows:
// myFlags = EAXBUFFERFLAGS_DIRECTHFAUTO | EAXBUFFERFLAGS_ROOMAUTO;
// instead of:
// myFlags = 0x00000003;
//
EAXBUFFERFLAGS_DIRECTHFAUTO = $00000001;
// affects DSPROPERTY_EAXBUFFER_DIRECTHF
EAXBUFFERFLAGS_ROOMAUTO = $00000002;
// affects DSPROPERTY_EAXBUFFER_ROOM
EAXBUFFERFLAGS_ROOMHFAUTO = $00000004;
// affects DSPROPERTY_EAXBUFFER_ROOMHF
EAXBUFFERFLAGS_RESERVED = $FFFFFFF8; // reserved future use
// property ranges and defaults:
EAXBUFFER_MINDIRECT = -10000;
EAXBUFFER_MAXDIRECT = 1000;
EAXBUFFER_DEFAULTDIRECT = 0;
EAXBUFFER_MINDIRECTHF = -10000;
EAXBUFFER_MAXDIRECTHF = 0;
EAXBUFFER_DEFAULTDIRECTHF = 0;
EAXBUFFER_MINROOM = -10000;
EAXBUFFER_MAXROOM = 1000;
EAXBUFFER_DEFAULTROOM = 0;
EAXBUFFER_MINROOMHF = -10000;
EAXBUFFER_MAXROOMHF = 0;
EAXBUFFER_DEFAULTROOMHF = 0;
EAXBUFFER_MINROOMROLLOFFFACTOR = 0.0;
EAXBUFFER_MAXROOMROLLOFFFACTOR = 10.;
EAXBUFFER_DEFAULTROOMROLLOFFFACTOR = 0.0;
EAXBUFFER_MINOBSTRUCTION = -10000;
EAXBUFFER_MAXOBSTRUCTION = 0;
EAXBUFFER_DEFAULTOBSTRUCTION = 0;
EAXBUFFER_MINOBSTRUCTIONLFRATIO = 0.0;
EAXBUFFER_MAXOBSTRUCTIONLFRATIO = 1.0;
EAXBUFFER_DEFAULTOBSTRUCTIONLFRATIO = 0.0;
EAXBUFFER_MINOCCLUSION = -10000;
EAXBUFFER_MAXOCCLUSION = 0;
EAXBUFFER_DEFAULTOCCLUSION = 0;
EAXBUFFER_MINOCCLUSIONLFRATIO = 0.0;
EAXBUFFER_MAXOCCLUSIONLFRATIO = 1.0;
EAXBUFFER_DEFAULTOCCLUSIONLFRATIO = 0.25;
EAXBUFFER_MINOCCLUSIONROOMRATIO = 0.0;
EAXBUFFER_MAXOCCLUSIONROOMRATIO = 10.0;
EAXBUFFER_DEFAULTOCCLUSIONROOMRATIO = 0.5;
EAXBUFFER_MINOUTSIDEVOLUMEHF = -10000;
EAXBUFFER_MAXOUTSIDEVOLUMEHF = 0;
EAXBUFFER_DEFAULTOUTSIDEVOLUMEHF = 0;
EAXBUFFER_MINAIRABSORPTIONFACTOR = 0.0;
EAXBUFFER_MAXAIRABSORPTIONFACTOR = 10.0;
EAXBUFFER_DEFAULTAIRABSORPTIONFACTOR = 1.0;
EAXBUFFER_DEFAULTFLAGS = EAXBUFFERFLAGS_DIRECTHFAUTO or
EAXBUFFERFLAGS_ROOMAUTO or
EAXBUFFERFLAGS_ROOMHFAUTO;
// Material transmission presets
// 3 values in this order:
// 1: occlusion (or obstruction)
// 2: occlusion LF Ratio (or obstruction LF Ratio)
// 3: occlusion Room Ratio
// Single window material preset
EAX_MATERIAL_SINGLEWINDOW = -2800;
EAX_MATERIAL_SINGLEWINDOWLF = 0.71;
EAX_MATERIAL_SINGLEWINDOWROOMRATIO = 0.43;
// Double window material preset
EAX_MATERIAL_DOUBLEWINDOW = -5000;
EAX_MATERIAL_DOUBLEWINDOWHF = 0.40;
EAX_MATERIAL_DOUBLEWINDOWROOMRATIO = 0.24;
// Thin door material preset
EAX_MATERIAL_THINDOOR = -1800;
EAX_MATERIAL_THINDOORLF = 0.66;
EAX_MATERIAL_THINDOORROOMRATIO = 0.66;
// Thick door material preset
EAX_MATERIAL_THICKDOOR = -4400;
EAX_MATERIAL_THICKDOORLF = 0.64;
EAX_MATERIAL_THICKDOORROOMRTATION = 0.27;
// Wood wall material preset
EAX_MATERIAL_WOODWALL = -4000;
EAX_MATERIAL_WOODWALLLF = 0.50;
EAX_MATERIAL_WOODWALLROOMRATIO = 0.30;
// Brick wall material preset
EAX_MATERIAL_BRICKWALL = -5000;
EAX_MATERIAL_BRICKWALLLF = 0.60;
EAX_MATERIAL_BRICKWALLROOMRATIO = 0.24;
// Stone wall material preset
EAX_MATERIAL_STONEWALL = -6000;
EAX_MATERIAL_STONEWALLLF = 0.68;
EAX_MATERIAL_STONEWALLROOMRATIO = 0.20;
// Curtain material preset
EAX_MATERIAL_CURTAIN = -1200;
EAX_MATERIAL_CURTAINLF = 0.15;
EAX_MATERIAL_CURTAINROOMRATIO = 1.00;
var
//OpenAL Maintenance Functions
//State Management and Query.
//Error Handling.
//Extension Support.
//Renderer State management.
alEnable: procedure(capability: TALenum); cdecl;
alDisable: procedure(capability: TALenum); cdecl;
alIsEnabled: function(capability: TALenum): TALboolean; cdecl;
//Application preferences for driver performance choices.
alHint: procedure(target, mode: TALenum); cdecl;
//State retrieval.
alGetBooleanv: procedure(param: TALenum; data: PALboolean); cdecl;
alGetIntegerv: procedure(param: TALenum; data: PALint); cdecl;
alGetFloatv: procedure(param: TALenum; data: PALfloat); cdecl;
alGetDoublev: procedure(param: TALenum; data: PALdouble); cdecl;
alGetString: function(param: TALenum): PALubyte; cdecl;
//State retrieval.through return value ( for compatibility )
alGetBoolean: function(param: TALenum): TALboolean; cdecl;
alGetInteger: function(param: TALenum): TALint; cdecl;
alGetFloat: function(param: TALenum): TALfloat; cdecl;
alGetDouble: function(param: TALenum): TALdouble; cdecl;
//ERROR support.
//Obtain the most recent error generated in the AL state machine.
alGetError: function: TALenum; cdecl;
//EXTENSION support.
//Obtain the address of a function (usually an extension)
// with the name fname. All addresses are context-independent.
alIsExtensionPresent: function(fname: Pchar): TALboolean; cdecl;
//Obtain the address of a function (usually an extension)
//with the name fname. All addresses are context-independent.
alGetProcAddress: function(fname: PALuByte): Pointer; cdecl;
//Obtain the integer value of an enumeration (usually an extension) with the name ename.
alGetEnumValue: function(ename: PALuByte): TALenum; cdecl;
//LISTENER
//Listener is the sample position for a given context.
//The multi-channel (usually stereo) output stream generated
//by the mixer is parametrized by this Listener object:
//its position and velocity relative to Sources, within
//occluder and reflector geometry.
//Listener Environment: default 0.
alListeneri: procedure(param: TAlenum; value: TALint); cdecl;
//Listener Gain: default 1.0f.
alListenerf: procedure(param: TALenum; value: TALfloat); cdecl;
//Listener Position.
//Listener Velocity.
alListener3f: procedure(param: TALenum; f1: TALfloat; f2: TALfloat; f3: TALfloat); cdecl;
//Listener Position: array [0..2] of TALfloat
//Listener Velocity: array [0..2] of TALfloat
//Listener Orientation: array [0..5] of TALfloat forward and up vector.
alListenerfv: procedure(param: TALenum; values: PALfloat); cdecl;
//Retrieve listener information
alGetListeneriv: procedure(param: TALenum; values: PALint); cdecl;
alGetListenerfv: procedure(param: TALenum; values: PALfloat); cdecl;
//SOURCE
//Source objects are by default localized. Sources
//take the PCM data provided in the specified Buffer,
//apply Source-specific modifications, and then
//submit them to be mixed according to spatial
//arrangement etc.
//Create Source objects.
alGenSources: procedure(n: TALsizei; sources: PALuint); cdecl;
//Delete Source objects.
alDeleteSources: procedure(n: TALsizei; sources: PALuint); cdecl;
//Verify a handle is a valid Source.
alIsSource: function(id: TALuint): TALboolean; cdecl;
//Set an integer parameter for a Source object.
alSourcei: procedure(source: TALuint; param: TALenum; value: TALint); cdecl;
//Set a float parameter for a Source object.
alSourcef: procedure(source: TALuint; param: TALenum; value: TALfloat); cdecl;
//Set a 3 float parameter for a Source object.
alSource3f: procedure(source: TALuint; param: TALenum; v1: TALfloat; v2: TALfloat; v3: TALfloat); cdecl;
//Set a float vector parameter for a Source object.
alSourcefv: procedure(source: TALuint; param: TALenum; values: PALfloat); cdecl;
//Get an integer scalar parameter for a Source object.
alGetSourcei: procedure(source: TALuint; param: TALenum; value: PALint); cdecl;
//Get a float scalar parameter for a Source object.
alGetSourcef: procedure(source: TALuint; param: TALenum; value: PALfloat); cdecl;
//Get three float scalar parameter for a Source object.
alGetSource3f: procedure(source: TALuint; param: TALenum; v1: PALfloat; v2: PALfloat; v3: PALfloat); cdecl;
//Get a float vector parameter for a Source object.
alGetSourcefv: procedure(source: TALuint; param: TALenum; values: PALfloat); cdecl;
//Activate a source, start replay.
alSourcePlay: procedure(source: TALuint); cdecl;
//Pause a source,
//temporarily remove it from the mixer list.
alSourcePause: procedure(source: TALuint); cdecl;
//Stop a source,
//temporarily remove it from the mixer list,
//and reset its internal state to pre-Play.
//To remove a Source completely, it has to be
//deleted following Stop, or before Play.
alSourceStop: procedure(source: TALuint); cdecl;
//Rewind a souce. Stopped paused and playing sources,
//resets the offset into the PCM data and sets state to
//AL_INITIAL.
alSourceRewind: procedure(source: TALuint); cdecl;
//vector forms of those functions we all love
alSourcePlayv: procedure(n: TALsizei; sources: PALuint); cdecl;
alSourceStopv: procedure(n: TALsizei; sources: PALuint); cdecl;
alSourceRewindv: procedure(n: TALsizei; sources: PALuint); cdecl;
alSourcePausev: procedure(n: TALsizei; sources: PALuint); cdecl;
//BUFFER
//Buffer objects are storage space for sample data.
//Buffers are referred to by Sources. There can be more than
//one Source using the same Buffer data. If Buffers have
//to be duplicated on a per-Source basis, the driver has to
//take care of allocation, copying, and deallocation as well
//as propagating buffer data changes.
//Buffer object generation.
alGenBuffers: procedure(n: TALsizei; buffers: PALuint); cdecl;
alDeleteBuffers: procedure(n: TALsizei; buffers: PALuint); cdecl;
alIsBuffer: function(buffer: TALuint): TALboolean; cdecl;
//Specify the data to be filled into a buffer.
alBufferData: procedure(buffer: TALuint; format: TALenum; data: Pointer; size, freq: TALsizei); cdecl;
//read parameter for an buffer object
alGetBufferi: procedure(buffer: TALuint; param: TALenum; value: PALint); cdecl;
alGetBufferf: procedure(buffer: TALuint; param: TALenum; value: PALfloat); cdecl;
//Queue stuff
alSourceQueueBuffers: procedure(source: TALuint; n: TALsizei; buffers: PALuint); cdecl;
alSourceUnqueueBuffers: procedure(source: TALuint; n: TALsizei; buffers: PALuint); cdecl;
//Knobs and dials
alDistanceModel: procedure(value: TALenum); cdecl;
alDopplerFactor: procedure(value: TALfloat); cdecl;
alDopplerVelocity: procedure(value: TALfloat); cdecl;
//alc
alcCreateContext: function(device: TALCdevice; attrlist: PALCint): TALCcontext; cdecl;
//There is no current context, as we can mix
//several active contexts. But al* calls
//only affect the current context.
alcMakeContextCurrent: function(context: TALCcontext): TALCenum; cdecl;
//Perform processing on a synced context, non-op on a asynchronous
//context.
alcProcessContext: procedure(context: TALCcontext); cdecl;
//Suspend processing on an asynchronous context, non-op on a
//synced context.
alcSuspendContext: procedure(context: TALCcontext); cdecl;
alcDestroyContext: procedure(context: TALCcontext); cdecl;
alcGetError: function(device: TALCdevice): TALCenum; cdecl;
alcGetCurrentContext: function: TALCcontext; cdecl;
alcOpenDevice: function(deviceName: PALCuByte): TALCdevice; cdecl;
alcCloseDevice: procedure(device: TALCdevice); cdecl;
alcIsExtensionPresent: function(device: TALCdevice; extName: PALuByte): TALCboolean; cdecl;
alcGetProcAddress: function(device: TALCdevice; funcName: PALuByte): TALCvoid; cdecl;
alcGetEnumValue: function(device: TALCdevice; enumName: PALuByte): TALCenum; cdecl;
alcGetContextsDevice: function(context: TALCcontext): TALCdevice; cdecl;
//Query functions
alcGetString: function(device: TALCdevice; param: TALCenum): PALCubyte; cdecl;
alcGetIntegerv: procedure(device: TALCdevice; param: TALCenum; size: TALCsizei; data: PALCint); cdecl;
//EAX functions
EAXSet: Function(const Guid: TGUID; ALuint1: TALuint; ALuint2: TALuint; point: Pointer; ALuint3: TALuint): TALenum; cdecl;
EAXGet: Function(const Guid: TGUID; ALuint1: TALuint; ALuint2: TALuint; point: Pointer; ALuint3: TALuint): TALenum; cdecl;
{$IFDEF ALUT}
//External Alut functions (from dll or so)
alutInit: procedure(argc: PALint; argv: array of PALbyte); cdecl;
alutExit: procedure; cdecl;
alutLoadWAVFile: procedure(fname: string; var format: TALenum; var data: TALvoid; var size: TALsizei; var freq: TALsizei; var loop: TALint); cdecl;
alutLoadWAVMemory: procedure(memory: PALbyte; var format: TALenum; var data: TALvoid; var size: TALsizei; var freq: TALsizei; var loop: TALint); cdecl;
alutUnloadWAV: procedure(format: TALenum; data: TALvoid; size: TALsizei; freq: TALsizei); cdecl;
{$ELSE}
//Internal Alut functions
procedure alutInit(argc: PALint; argv: array of PALbyte);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -