Mark Sibly 9 éve
szülő
commit
0a64808c37

BIN
bananas/openaltest/fine_morning.wav


+ 123 - 0
bananas/openaltest/openaltest.monkey2

@@ -0,0 +1,123 @@
+
+Namespace openaltest
+
+#import "<std>"
+#import "<mojo>"
+#import "<openal>"
+
+#import "fine_morning.wav"
+
+Using std..
+Using mojo..
+Using openal..
+
+Function ALFormat:ALenum( format:AudioFormat )
+	Local alFormat:ALenum
+	Select format
+	Case AudioFormat.Mono8
+		alFormat=AL_FORMAT_MONO8
+	Case AudioFormat.Mono16
+		alFormat=AL_FORMAT_MONO16
+	Case AudioFormat.Stereo8
+		alFormat=AL_FORMAT_STEREO8
+	Case AudioFormat.Stereo16
+		alFormat=AL_FORMAT_STEREO16
+	End
+	Return alFormat
+End
+
+Function ALSourceState:String( src:ALuint )
+	Local alState:ALint
+	alGetSourcei( src,AL_SOURCE_STATE,Varptr alState )
+	
+	Local state:=String( alState )+" ?????"
+	Select alState
+	Case AL_INITIAL
+		state="initial"
+	Case AL_PLAYING
+		state="playing"
+	Case AL_PAUSED
+		state="paused"
+	Case AL_STOPPED
+		state="stopped"
+	End
+	Return state
+End
+
+Function LoadALBuffer:ALuint( path:String )
+
+	Local audio:=AudioData.Load( "asset::fine_morning.wav" )
+	If Not audio Return 0
+	
+	Local buf:ALuint
+	alGenBuffers( 1,Varptr buf )
+	alBufferData( buf,ALFormat( audio.Format ),audio.Data,audio.Size,audio.Hertz )
+	audio.Discard()
+	
+	Return buf
+End
+
+Class MyWindow Extends Window
+
+	Field bufs:=New ALuint[2]
+	Field src:ALuint
+	Field proc:ALuint
+
+	Method New()
+		Local device:=alcOpenDevice( Null )
+		Assert( device,"Failed to open OpenAL device" )
+		
+		Local context:=alcCreateContext( device,Null )
+		Assert( context,"Failed to create OpenAL context" )
+		
+		Assert( alcMakeContextCurrent( context ) )
+		
+		bufs[0]=LoadALBuffer( "asset::find_morning.wav" )
+		bufs[1]=LoadALBuffer( "asset::find_morning.wav" )
+		Assert( bufs[0] And bufs[1],"Failed to load buffer" )
+
+		alGenSources( 1,Varptr src )
+		
+		alSourceQueueBuffers( src,2,Varptr bufs[0] )
+	End
+	
+	Method OnRender( canvas:Canvas ) Override
+	
+		App.RequestRender()
+		
+		Local state:=ALSourceState( src )
+		
+		Local proc:ALint
+		alGetSourcei( src,AL_BUFFERS_PROCESSED,Varptr proc )
+		
+		If proc<>Self.proc
+			Local tmp:ALuint
+			alSourceUnqueueBuffers( src,1,Varptr tmp )
+			alSourceQueueBuffers( src,1,Varptr tmp )
+			Self.proc=proc
+		Endif
+		
+		canvas.DrawText( "source state="+state+" (SPACE to change) proc="+proc,0,0 )
+		
+		If Keyboard.KeyPressed( Key.Space )
+			Select state
+			Case "initial","stopped","paused"
+				alSourcePlay( src )
+			Case "playing"
+				alSourcePause( src )
+			End
+			Print state+"->"+ALSourceState( src )
+		Endif
+	End
+	
+End
+
+Function Main()
+
+	New AppInstance
+	
+	New MyWindow
+	
+	App.Run()
+	
+End

+ 77 - 0
bananas/sdl2test/sdl2test.monkey2

@@ -0,0 +1,77 @@
+
+#import "<libc>"
+#import "<sdl2>"
+#import "<gles20>"
+
+Namespace sdl2test
+
+Using libc..
+Using sdl2..
+Using gles20..
+
+Class SdlWindow
+
+	Field sdlWindow:SDL_Window Ptr
+	Field sdlGLContext:SDL_GLContext
+	
+	Method New()
+	
+		SDL_Init( SDL_INIT_EVERYTHING )
+		
+		sdlWindow=SDL_CreateWindow( "SDL2 OpenGL Window",SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,640,480,SDL_WINDOW_OPENGL )
+		
+		sdlGLContext=SDL_GL_CreateContext( sdlWindow )
+		
+		SDL_GL_MakeCurrent( sdlWindow,sdlGLContext )
+	End
+	
+	Method Run()
+	
+		Repeat
+		
+			Local event:SDL_Event
+			
+			While( SDL_PollEvent( Varptr event ) )
+		
+				Select event.type
+					
+				Case SDL_WINDOWEVENT
+		
+					Local wevent:=Cast<SDL_WindowEvent Ptr>( Varptr event )
+			
+					Select wevent->event
+					
+					Case SDL_WINDOWEVENT_CLOSE
+					
+						exit_( 0 )
+					
+					End
+					
+				End
+
+			Wend
+			
+			OnRender()
+			
+			SDL_GL_SwapWindow( sdlWindow )
+		Forever
+		
+	End
+	
+	Method OnRender()
+	
+		glClearColor( 1,1,0,1 )
+		
+		glClear( GL_COLOR_BUFFER_BIT )
+	End
+	
+End
+
+
+Function Main()
+
+	Local window:=New SdlWindow
+	
+	window.Run()
+
+End