From ef75237981ebd6b2d531bce0022f66fbbcdc6f2d Mon Sep 17 00:00:00 2001 From: the_fiddler Date: Fri, 11 Jan 2008 20:17:01 +0000 Subject: [PATCH] Initial commit. --- Source/Examples/OpenAL/TestContext.cs | 151 ++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 Source/Examples/OpenAL/TestContext.cs diff --git a/Source/Examples/OpenAL/TestContext.cs b/Source/Examples/OpenAL/TestContext.cs new file mode 100644 index 00000000..b4fc0e14 --- /dev/null +++ b/Source/Examples/OpenAL/TestContext.cs @@ -0,0 +1,151 @@ +using System; + +using OpenTK.OpenAL; + +using AlContext = System.IntPtr; +using AlDevice = System.IntPtr; +using Examples; + +namespace OpenALTestProgram +{ +#if false + [Example("OpenAL Context Test", ExampleCategory.OpenAL, 101, false)] + class TestApp + { + public static void GetOpenALErrors( IntPtr device ) + { + Enums.AlError AlErr = Al.GetError( ); + Enums.AlcError AlcErr = Alc.GetError( device ); + Enums.AlutError AlutErr = Alut.GetError( ); + Console.WriteLine( " Al: " + AlErr + " Alc: " + AlcErr + " Alut: " + AlcErr + " " + Alut.GetErrorString( AlutErr ) ); + } + + static void Main( string[] args ) + { + AlcUnitTestFunc( ); + } + + public static void AlcUnitTestFunc() + { + Console.WriteLine("Found Devices: "+ Alc.GetString( Al.Null, Enums.AlcGetString.DeviceSpecifier )); + + AlDevice MyDevice; + AlContext MyContext; + + // Initialize Open AL + MyDevice = Alc.OpenDevice( null );// open default device + if ( MyDevice != Al.Null ) + { + Console.WriteLine( "Device allocation succeeded." ); + MyContext = Alc.CreateContext( MyDevice, Al.Null ); // create context + if ( MyContext != Al.Null ) + { + Console.WriteLine( "Context allocation succeeded." ); + GetOpenALErrors( MyDevice ); + + Alc.SuspendContext( MyContext ); // disable context + Alc.ProcessContext( MyContext ); // enable context. The default state of a context created by alcCreateContext is that it is processing. + Al.Bool result = Alc.MakeContextCurrent( MyContext ); // set active context + Console.WriteLine( "MakeContextCurrent succeeded? " + result ); + GetOpenALErrors( MyDevice ); + + Console.WriteLine( "Default: " + Alc.GetString( MyDevice, Enums.AlcGetString.DefaultDeviceSpecifier ) ); + Console.WriteLine( "Device: " + Alc.GetString( MyDevice, Enums.AlcGetString.DeviceSpecifier ) ); + Console.WriteLine( "Extensions: " + Alc.GetString( MyDevice, Enums.AlcGetString.Extensions ) ); + GetOpenALErrors( MyDevice ); + + #region Get Attribs + int AttribCount; + Alc.GetInteger( MyDevice, Enums.AlcGetInteger.AttributesSize, sizeof( int ), out AttribCount ); + Console.WriteLine( "AttributeSize: " + AttribCount ); + + if ( AttribCount > 0 ) + { + int[] Attribs = new int[AttribCount]; + Alc.GetInteger( MyDevice, Enums.AlcGetInteger.AttributesSize, AttribCount, out Attribs[0] ); + for ( int i = 0; i < Attribs.Length; i++ ) + Console.Write( ", " + Attribs[i] ); + Console.WriteLine( ); + } + #endregion Get Attribs + GetOpenALErrors( MyDevice ); + + AlDevice currdev = Alc.GetContextsDevice( MyContext ); + AlContext currcon = Alc.GetCurrentContext( ); + + if ( MyDevice == currdev ) + Console.WriteLine( "Devices match." ); + else + Console.WriteLine( "Error: Devices do not match." ); + + if ( MyContext == currcon ) + Console.WriteLine( "Context match." ); + else + Console.WriteLine( "Error: Contexts do not match." ); + + // exit + Alc.MakeContextCurrent( Al.Null ); // results in no context being current + Alc.DestroyContext( MyContext ); + result = Alc.CloseDevice( MyDevice ); + Console.WriteLine( "Result: " + result ); + Console.ReadLine( ); + } + else + { + Console.WriteLine( "Context creation failed." ); + } + } + else + { + Console.WriteLine( "Failed to find suitable Device." ); + } + /* +include +include + +int +main (int argc, char **argv) +{ + ALuint helloBuffer, helloSource; + alutInit (&argc, argv); + helloBuffer = alutCreateBufferHelloWorld (); + alGenSources (1, &helloSource); + alSourcei (helloSource, AL_Buffer, helloBuffer); + alSourcePlay (helloSource); + alutSleep (1); + alutExit (); + return EXIT_SUCCESS; +}*/ + + /* + + * Processing Loop Example: +// PlaceCamera - places OpenGL camera & updates OpenAL listener data +void AVEnvironment::PlaceCamera() +{ +// update OpenGL camera position +glMatrixMode(GL_PROJECTION); +glLoadIdentity(); +glFrustum(-0.1333, 0.1333, -0.1, 0.1, 0.2, 50.0); +gluLookAt(listenerPos[0], listenerPos[1], listenerPos[2], +(listenerPos[0] + sin(listenerAngle)), listenerPos[1], +(listenerPos[2] - cos(listenerAngle)), +0.0, 1.0, 0.0); +// update OpenAL +// place listener at camera +alListener3f(AL_POSITION, listenerPos[0], listenerPos[1], listenerPos[2]); +float directionvect[6]; +directionvect[0] = (float) sin(listenerAngle); +directionvect[1] = 0; +directionvect[2] = (float) cos(listenerAngle); +directionvect[3] = 0; +directionvect[4] = 1; +directionvect[5] = 0; +alListenerfv(AL_ORIENTATION, directionvect); +} + + */ + } + } +#endif +}