sdl2test.monkey2 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #import "<sdl2>"
  2. #Import "<opengl>"
  3. Namespace sdl2test
  4. Using sdl2..
  5. Using opengl..
  6. Class SdlWindow
  7. Field sdlWindow:SDL_Window Ptr
  8. Field sdlGLContext:SDL_GLContext
  9. Method New()
  10. SDL_Init( SDL_INIT_VIDEO )
  11. libc.atexit( SDL_Quit )
  12. SDL_GL_SetAttribute( SDL_GL_CONTEXT_PROFILE_MASK,SDL_GL_CONTEXT_PROFILE_ES )'COMPATIBILITY )
  13. SDL_GL_SetAttribute( SDL_GL_CONTEXT_MAJOR_VERSION,2 )
  14. SDL_GL_SetAttribute( SDL_GL_CONTEXT_MINOR_VERSION,1 )
  15. SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER,1 )
  16. SDL_GL_SetAttribute( SDL_GL_RED_SIZE,8 )
  17. SDL_GL_SetAttribute( SDL_GL_GREEN_SIZE,8 )
  18. SDL_GL_SetAttribute( SDL_GL_BLUE_SIZE,8 )
  19. sdlWindow=SDL_CreateWindow( "SDL2 OpenGL Window",SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,640,480,SDL_WINDOW_OPENGL )
  20. sdlGLContext=SDL_GL_CreateContext( sdlWindow )
  21. SDL_GL_MakeCurrent( sdlWindow,sdlGLContext )
  22. bbglInit()
  23. End
  24. Method Run()
  25. Repeat
  26. Local event:SDL_Event
  27. While( SDL_PollEvent( Varptr event ) )
  28. Select event.type
  29. Case SDL_WINDOWEVENT
  30. Local wevent:=Cast<SDL_WindowEvent Ptr>( Varptr event )
  31. Select wevent->event
  32. Case SDL_WINDOWEVENT_CLOSE
  33. libc.exit_(0)
  34. End
  35. End
  36. Wend
  37. OnRender()
  38. SDL_GL_SwapWindow( sdlWindow )
  39. Forever
  40. End
  41. Method OnRender()
  42. glClearColor( 1,1,0,1 )
  43. glClear( GL_COLOR_BUFFER_BIT )
  44. glEnable( GL_SCISSOR_TEST )
  45. For Local y:=0 Until 256
  46. glScissor( 0,y,640,1 )
  47. glClearColor( y/256.0,0,0,1 )
  48. glClear( GL_COLOR_BUFFER_BIT )
  49. Next
  50. glDisable( GL_SCISSOR_TEST )
  51. End
  52. End
  53. Function Main()
  54. Local window:=New SdlWindow
  55. window.Run()
  56. End