From 08409b1ca345e660311258845e284b8ff7b4aaa7 Mon Sep 17 00:00:00 2001 From: chrisbrandtner Date: Thu, 24 Jan 2008 22:53:09 +0000 Subject: [PATCH] added Bind* Helpers. --- Source/OpenTK/OpenAL/AlFunctions.cs | 23 ++++++++++++++++++++++- Source/OpenTK/OpenAL/EfxFunctions.cs | 13 +++++++++++-- Source/OpenTK/OpenAL/History.txt | 9 +++++---- 3 files changed, 38 insertions(+), 7 deletions(-) diff --git a/Source/OpenTK/OpenAL/AlFunctions.cs b/Source/OpenTK/OpenAL/AlFunctions.cs index bedd0de4..d5aba28b 100644 --- a/Source/OpenTK/OpenAL/AlFunctions.cs +++ b/Source/OpenTK/OpenAL/AlFunctions.cs @@ -498,7 +498,16 @@ namespace OpenTK.OpenAL Source(sid,(Enums.ALSourcei) param,( value ) ? 1 : 0); } - // This function sets 3 integer properties of a source. This property is used to establish connections between Sources and Auxiliary Effect Slots. + /// (Helper) Binds a Buffer to a Source handle. + /// Source name to attach the Buffer to. + /// Buffer name which is attached to the Source. + [CLSCompliant(false)] + public static void BindBufferToSource( uint source,uint buffer ) + { + Source(source,Enums.ALSourcei.Buffer,(int)buffer); + } + + /// This function sets 3 integer properties of a source. This property is used to establish connections between Sources and Auxiliary Effect Slots. /// Source name whose attribute is being set. /// The name of the attribute to set: EfxAuxiliarySendFilter /// The value to set the attribute to. (EFX Extension) The destination Auxiliary Effect Slot ID @@ -508,6 +517,18 @@ namespace OpenTK.OpenAL public static extern void Source( uint sid,Enums.ALSource3i param,int value1,int value2,int value3 ); // AL_API void AL_APIENTRY alSource3i( ALuint sid, ALenum param, ALint value1, ALint value2, ALint value3 ); + + /// (Helper) Reroutes a Source's output into an Auxiliary Effect Slot. + /// The Source handle who's output is forwarded. + /// The Auxiliary Effect Slot handle that receives input from the Source. + /// Every Source has only a limited number of slots it can feed data to. The number must stay below AlcContextAttributes.EfxMaxAuxiliarySends + /// Filter handle to be attached between Source ouput and Auxiliary Slot input. Use 0 or EfxFilterType.FilterNull for no filter. + [CLSCompliant(false)] + public static void BindSourceToAuxiliarySlot( uint source,uint slot,int slotnumber, uint filter ) + { + AL.Source(source,Enums.ALSource3i.EfxAuxiliarySendFilter,(int) slot,slotnumber,(int) filter); + } + // Not used by any Enum: // AL_API void AL_APIENTRY alSourcefv( ALuint sid, ALenum param, const ALfloat* values ); // AL_API void AL_APIENTRY alSourceiv( ALuint sid, ALenum param, const ALint* values ); diff --git a/Source/OpenTK/OpenAL/EfxFunctions.cs b/Source/OpenTK/OpenAL/EfxFunctions.cs index 46571e92..b8545b1c 100644 --- a/Source/OpenTK/OpenAL/EfxFunctions.cs +++ b/Source/OpenTK/OpenAL/EfxFunctions.cs @@ -139,8 +139,8 @@ namespace OpenTK.OpenAL Imported_alEffecti(eid,param,value); } - /// (Helper) internally calls alEffecti(eid,Enums.EfxEffecti.EffectType,(int) type) - /// Effect id. + /// (Helper) Selects the Effect type used by this Effect handle. + /// Effect id returned from a successful call to Efx.GenEffects. /// Effect type. [CLSCompliant(false)] public void BindEffect( uint eid,Enums.EfxEffectType type ) @@ -612,6 +612,15 @@ namespace OpenTK.OpenAL Imported_alAuxiliaryEffectSloti(asid,param,value); } + /// (Helper) Attaches an Effect to an Auxiliary Effect Slot. + /// The slot handle to attach the Effect to. + /// The Effect handle that is being attached. + [CLSCompliant(false)] + public void BindEffectToAuxiliarySlot( uint auxiliaryeffectslot,uint effect ) + { + AuxiliaryEffectSlot(auxiliaryeffectslot,Enums.EfxAuxiliaryi.EffectslotEffect,(int) effect); + } + #endregion alAuxiliaryEffectSloti #region alAuxiliaryEffectSlotf diff --git a/Source/OpenTK/OpenAL/History.txt b/Source/OpenTK/OpenAL/History.txt index d52aec68..ee1cf0ef 100644 --- a/Source/OpenTK/OpenAL/History.txt +++ b/Source/OpenTK/OpenAL/History.txt @@ -22,8 +22,7 @@ Efx: Functions not imported: alEffectiv, alGetEffectiv alFilteriv, alFilterfv, alGetFilteriv, alGetFilterfv alAuxiliaryEffectSlotiv, alAuxiliaryEffectSlotfv, alGetAuxiliaryEffectSlotiv, alGetAuxiliaryEffectSlotfv - -- Added AL.Null for convenience when working with C Manuals. + - Added Function AL.GetErrorString() - Added overloads for requesting/deleting a single buffer/source at a time. - Refactored -i -fv -3f functions to be overloads e.g AL.GetSource, AL.GetListener @@ -35,13 +34,15 @@ Alpha v0.9 -added alEffectfv and alGetEffectfv -ported samples from SDK +Alpha v0.95 +-full cleanup of AL class documentation +-added *.Bind* helpers. Todo for beta: - Identify: AL_FILTER_FIRST_PARAMETER, AL_FILTER_LAST_PARAMETER AL_EFFECT_FIRST_PARAMETER, AL_EFFECT_LAST_PARAMETER -- AL.BindBuffer helper function ala GL.BindBuffer? (Wraps AL.Source, better consistency) -- change all "name" into "handle" to avoid confusion? +- replace EaxEfx reverbs with Efx reverbs. Todo for final: - Enums themselves require summaries (do after some more serious tests) \ No newline at end of file