123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- Namespace mojo.graphics.glutil
- Private
- Global tmpi:Int
- Public
- #rem monkeydoc @hidden
- #end
- Global glGraphicsSeq:Int=1
- #rem monkeydoc @hidden
- #end
- Function glCheck()
- Local err:=glGetError()
- If err=GL_NO_ERROR Return
- Assert( False,"GL ERROR! err="+err )
- End
- #rem monkeydoc @hidden
- #end
- Function glFormat:GLenum( format:PixelFormat )
- Select format
- Case PixelFormat.A8 Return GL_ALPHA
- Case PixelFormat.I8 Return GL_LUMINANCE
- Case PixelFormat.IA16 Return GL_LUMINANCE_ALPHA
- Case PixelFormat.RGB24 Return GL_RGB
- Case PixelFormat.RGBA32 Return GL_RGBA
- End
- Assert( False,"Invalidate PixelFormat" )
- Return GL_RGBA
- End
- #rem monkeydoc @hidden
- #end
- Function glPushTexture2d:Void( tex:Int )
- glGetIntegerv( GL_TEXTURE_BINDING_2D,Varptr tmpi )
- glBindTexture( GL_TEXTURE_2D,tex )
- End
- #rem monkeydoc @hidden
- #end
- Function glPopTexture2d:Void()
- glBindTexture( GL_TEXTURE_2D,tmpi )
- End
- #rem monkeydoc @hidden
- #end
- Function glPushArrayBuffer( buf:Int )
- glGetIntegerv( GL_ARRAY_BUFFER_BINDING,Varptr tmpi )
- glBindBuffer( GL_ARRAY_BUFFER,buf )
- End
- #rem monkeydoc @hidden
- #end
- Function glPopArrayBuffer()
- glBindBuffer( GL_ARRAY_BUFFER,tmpi )
- End
- #rem monkeydoc @hidden
- #end
- Function glPushElementArrayBuffer( buf:Int )
- glGetIntegerv( GL_ELEMENT_ARRAY_BUFFER_BINDING,Varptr tmpi )
- glBindBuffer( GL_ELEMENT_ARRAY_BUFFER,buf )
- End
- #rem monkeydoc @hidden
- #end
- Function glPopElementArrayBuffer()
- glBindBuffer( GL_ELEMENT_ARRAY_BUFFER,tmpi )
- End
- #rem monkeydoc @hidden
- #end
- Function glPushFramebuffer:Void( framebuf:Int )
- glGetIntegerv( GL_FRAMEBUFFER_BINDING,Varptr tmpi )
- glBindFramebuffer( GL_FRAMEBUFFER,framebuf )
- End
- #rem monkeydoc @hidden
- #end
- Function glPopFramebuffer:Void()
- glBindFramebuffer( GL_FRAMEBUFFER,tmpi )
- End
- #rem monkeydoc @hidden
- #end
- Function glCompile:Int( type:Int,source:String )
- #If __TARGET__="windows" Or Not __DESKTOP_TARGET__
- source="precision mediump float;~n"+source
- #Endif
-
- Local shader:=glCreateShader( type )
- glShaderSourceEx( shader,source )
- glCompileShader( shader )
- glGetShaderiv( shader,GL_COMPILE_STATUS,Varptr tmpi )
- If Not tmpi
- Local lines:=source.Split( "~n" )
- For Local i:=0 Until lines.Length
- Print (i+1)+":~t"+lines[i]
- Next
- RuntimeError( "Failed to compile fragment shader:"+glGetShaderInfoLogEx( shader ) )
- Endif
- Return shader
- End
- #rem monkeydoc @hidden
- #end
- Function glLink:Void( program:Int )
- glLinkProgram( program )
- glGetProgramiv( program,GL_LINK_STATUS,Varptr tmpi )
- If Not tmpi RuntimeError( "Failed to link program:"+glGetProgramInfoLogEx( program ) )
- End
|