glutil.monkey2 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. Namespace mojo.graphics.glutil
  2. Private
  3. Global tmpi:Int
  4. Public
  5. #rem monkeydoc @hidden
  6. #end
  7. Global glGraphicsSeq:Int=1
  8. #rem monkeydoc @hidden
  9. #end
  10. Function glCheck()
  11. Local err:=glGetError()
  12. If err=GL_NO_ERROR Return
  13. Assert( False,"GL ERROR! err="+err )
  14. End
  15. #rem monkeydoc @hidden
  16. #end
  17. Function glFormat:GLenum( format:PixelFormat )
  18. Select format
  19. Case PixelFormat.A8 Return GL_ALPHA
  20. Case PixelFormat.I8 Return GL_LUMINANCE
  21. Case PixelFormat.IA16 Return GL_LUMINANCE_ALPHA
  22. Case PixelFormat.RGB24 Return GL_RGB
  23. Case PixelFormat.RGBA32 Return GL_RGBA
  24. End
  25. Assert( False,"Invalidate PixelFormat" )
  26. Return GL_RGBA
  27. End
  28. #rem monkeydoc @hidden
  29. #end
  30. Function glPushTexture2d:Void( tex:Int )
  31. glGetIntegerv( GL_TEXTURE_BINDING_2D,Varptr tmpi )
  32. glBindTexture( GL_TEXTURE_2D,tex )
  33. End
  34. #rem monkeydoc @hidden
  35. #end
  36. Function glPopTexture2d:Void()
  37. glBindTexture( GL_TEXTURE_2D,tmpi )
  38. End
  39. #rem monkeydoc @hidden
  40. #end
  41. Function glPushFramebuffer:Void( framebuf:Int )
  42. glGetIntegerv( GL_FRAMEBUFFER_BINDING,Varptr tmpi )
  43. glBindFramebuffer( GL_FRAMEBUFFER,framebuf )
  44. End
  45. #rem monkeydoc @hidden
  46. #end
  47. Function glPopFramebuffer:Void()
  48. glBindFramebuffer( GL_FRAMEBUFFER,tmpi )
  49. End
  50. #rem monkeydoc @hidden
  51. #end
  52. Function glCompile:Int( type:Int,source:String )
  53. #if __TARGET__<>"desktop" Or __HOSTOS__="windows"
  54. source="precision mediump float;~n"+source
  55. #Endif
  56. Local shader:=glCreateShader( type )
  57. glShaderSourceEx( shader,source )
  58. glCompileShader( shader )
  59. glGetShaderiv( shader,GL_COMPILE_STATUS,Varptr tmpi )
  60. If Not tmpi
  61. Print "Failed to compile fragment shader:"+glGetShaderInfoLogEx( shader )
  62. Local lines:=source.Split( "~n" )
  63. For Local i:=0 Until lines.Length
  64. Print (i+1)+":~t"+lines[i]
  65. Next
  66. Assert( False,"Compile fragment shader failed" )
  67. Endif
  68. Return shader
  69. End
  70. #rem monkeydoc @hidden
  71. #end
  72. Function glLink:Void( program:Int )
  73. glLinkProgram( program )
  74. glGetProgramiv( program,GL_LINK_STATUS,Varptr tmpi )
  75. If Not tmpi Assert( False,"Failed to link program:"+glGetProgramInfoLogEx( program ) )
  76. End