package Ġb aa ah s . shows Ċ Ċ import Ġb aa ah s . geom . Matrix 4 Ċ import Ġb aa ah s . geom . Vector 2 F Ċ import Ġb aa ah s . geom . Vector 3 F Ċ import Ġb aa ah s . geom . Vector 4 F Ċ import Ġb aa ah s . getB ang Ċ import Ġb aa ah s . gl . Gl Context Ċ import Ġb aa ah s . gl . glsl . Compiled Shader Ċ import Ġb aa ah s . gl . glsl . Gl sl Program Ċ import Ġb aa ah s . gl . render . RenderTarget Ċ import Ġb aa ah s . glsl . Uniform Ċ import Ġcom . daniel ger ge ly . k gl .* Ċ Ċ class ĠFake Gl Context ( internal Ġval Ġfake K gl : ĠFake K gl Ġ= ĠFake K gl ()) Ġ: ĠGl Context ( fake K gl , Ġ" 1 2 3 4 ") Ġ{ ĊĠĠĠ Ġval Ġprograms Ġget () Ġ= Ġfake K gl . programs . let Ġ{ Ġit . sub List ( 1 , Ġit . size ) Ġ} ĊĠĠĠ Ġval Ġtextures Ġget () Ġ= Ġfake K gl . textures . let Ġ{ Ġit . sub List ( 1 , Ġit . size ) Ġ} ĊĠĠĠ Ġval Ġallocated Texture Units Ġget () Ġ= Ġtexture Units ĊĊĠĠĠ Ġoverride Ġfun Ġ< T > Ġrun In Context ( fn : Ġ() Ġ-> ĠT ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġ++ fake K gl . nest Level ĊĠĠĠĠĠĠĠ Ġtry Ġ{ Ġreturn Ġfn () Ġ} Ġfinally Ġ{ Ġfake K gl . nest Level -- Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġ< T > Ġasync Run In Context ( fn : Ġsuspend Ġ() Ġ-> ĠT ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġ++ fake K gl . nest Level ĊĠĠĠĠĠĠĠ Ġtry Ġ{ Ġreturn Ġfn () Ġ} Ġfinally Ġ{ Ġfake K gl . nest Level -- Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Texture Config ( texture Unit : ĠInt ): ĠFake K gl . Texture Config Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfake K gl . get Texture Config ( texture Unit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġerror (" no Ġtexture Ġbound Ġon Ġunit Ġ$ texture Unit ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfind Program ( id : ĠProgram ) Ġ= Ġfake K gl . programs [ id Ġas ĠInt ] Ċ } Ċ Ċ // ĠUnt il Ġmock k Ġworks Ġon ĠJS : Ċ class ĠFake K gl Ġ: ĠK gl Ġ{ ĊĠĠĠ Ġvar Ġnest Level Ġ= Ġ 0 ĊĊĠĠĠ Ġinternal Ġval Ġshaders Ġ= Ġarray ListOf ( Fake Shader ( 0 )) Ġ// Ġ 1 - based ĊĠĠĠ Ġinternal Ġval Ġprograms Ġ= Ġarray ListOf ( Fake Program ()) Ġ// Ġ 1 - based ĊĠĠĠ Ġprivate Ġvar Ġactive Program : ĠFake Program ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġuniform s Ġ= Ġarray ListOf < Any ? >( null ) Ġ// Ġ 1 - based ĊĊĠĠĠ Ġinternal Ġval Ġtextures Ġ= Ġarray ListOf ( Texture Config ()) Ġ// Ġ 1 - based ĊĠĠĠ Ġprivate Ġvar Ġactive Texture Unit : ĠInt ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġtexture Units : ĠMutable Map < Int , ĠTexture Config > Ġ= Ġmutable Map Of () ĊĠĠĠ Ġprivate Ġvar Ġtargets : ĠMutable Map < Int , ĠTexture Config > Ġ= Ġmutable Map Of () ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Context () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( nest Level Ġ== Ġ 0 ) Ġerror (" ran ĠGL Ġcommand Ġoutside Ġof Ġcontext !") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠFake Shader ( val Ġtype : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġsrc : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠFake Program Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġshaders Ġ= Ġmutable Map Of < Int , ĠFake Shader >() ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġuniform Ids ByName Ġ= Ġmutable Map Of < String , ĠInt >() ĊĠĠĠĠĠĠĠ Ġval Ġrenders Ġ= Ġmutable ListOf < Render State >() ĊĊĠĠĠĠĠĠĠ Ġfun Ġget UniformLocation ( name : ĠString ): ĠUniform Location ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfake ( uniform Ids ByName . get Or Put ( name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuniform s . add ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuniform s . size Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġget Uniform ( name : ĠString ): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġuniform s [ uniform Ids ByName . getB ang ( name , Ġ" uniform ")] Ġas ĠT ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġuniform Names () Ġ= Ġuniform Ids ByName . keys . toSet () ĊĊĠĠĠĠĠĠĠ Ġfun Ġrecord Render () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrenders . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRender State ( uniform Ids ByName . map Values Ġ{ Ġ(_, Ġuniform Id ) Ġ-> Ġuniform s [ uniform Id ] Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠRender State ( val Ġuniform s : ĠMap < String , ĠAny ?> ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtexture Buffers Ġ= Ġtextures . sub List ( 1 , Ġtextures . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . buffer ?. contents () Ġ?: Ġempty List () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠTexture Config ( ĊĠĠĠĠĠĠĠ Ġvar Ġparams : ĠMutable Map < Int , ĠInt > Ġ= Ġmutable Map Of (), ĊĠĠĠĠĠĠĠ Ġvar Ġlevel : ĠInt ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġvar Ġinternal Format : ĠInt ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġvar Ġwidth : ĠInt ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġvar Ġheight : ĠInt ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġvar Ġborder : ĠInt ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġvar Ġformat : ĠInt ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġvar Ġtype : ĠInt ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġvar Ġbuffer : ĠBuffer ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġvar Ġoffset : ĠInt ? Ġ= Ġnull ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġis Deleted : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġfun Ġdelete () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Deleted ) Ġerror (" Already Ġdeleted .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Deleted Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġactive Texture ( texture : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠĠĠĠĠ Ġactive Texture Unit Ġ= Ġtexture Ġ- ĠGL _ TEXTURE 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġattach Shader ( program Id : ĠProgram , Ġshader Id : ĠShader ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĊĠĠĠĠĠĠĠ Ġval Ġfake Program Ġ= Ġprograms [ program Id Ġas ĠInt ] ĊĠĠĠĠĠĠĠ Ġval Ġfake Shader Ġ= Ġshaders [ shader Id Ġas ĠInt ] ĊĠĠĠĠĠĠĠ Ġfake Program . shaders [ fake Shader . type ] Ġ= Ġfake Shader ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbind Attrib Location ( program Id : ĠProgram , Ġindex : ĠInt , Ġname : ĠString ) Ġ{ Ġcheck Context () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbind Buffer ( target : ĠInt , Ġbuffer Id : ĠGl Buffer ?) Ġ{ Ġcheck Context () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbind Framebuffer ( target : ĠInt , Ġframebuffer : ĠFrame buffer ?) Ġ{ Ġcheck Context () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbind Render buffer ( target : ĠInt , Ġrender buffer : ĠRender buffer ?) Ġ{ Ġcheck Context () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbind Texture ( target : ĠInt , Ġtexture : ĠTexture ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠĠĠĠĠ Ġif Ġ( texture Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtargets . remove ( target ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtexture Units . remove ( active Texture Unit ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" CAST _ NE VER _ SU CCE ED S ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbound Texture Config Ġ= Ġtextures [ texture Ġas ĠInt ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtargets [ target ] Ġ= Ġbound Texture Config ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtexture Units [ active Texture Unit !! ] Ġ= Ġbound Texture Config ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbind VertexArray ( vertex Array Object : ĠVertex Array Object ?) Ġ{ Ġcheck Context () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġblend Func ( s Factor : ĠInt , Ġd Factor : ĠInt ) Ġ{ Ġcheck Context () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuffer Data ( target : ĠInt , Ġsource Data : ĠBuffer , Ġsize : ĠInt , Ġusage : ĠInt , Ġoffset : ĠInt ) Ġ{ Ġcheck Context () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcheck Framebuffer Status ( target : ĠInt ): ĠInt Ġ= Ġ 1 ĊĊĠĠĠ Ġoverride Ġfun Ġclear ( mask : ĠInt ) Ġ{ Ġcheck Context () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclear Color ( r : ĠFloat , Ġg : ĠFloat , Ġb : ĠFloat , Ġa : ĠFloat ) Ġ{ Ġcheck Context () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcompile Shader ( shader Id : ĠShader ) Ġ{ Ġcheck Context () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Buffer (): ĠGl Buffer Ġ= Ġfake ( 1 ) ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Buffers ( count : ĠInt ): ĠArray < Gl Buffer > Ġ= ĠArray ( count ) Ġ{ Ġcreate Buffer () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Framebuffer (): ĠFrame buffer Ġ= Ġfake ( 1 ) ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Program (): ĠProgram ? Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠĠĠĠĠ Ġprograms . add ( Fake Program ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġfake ( programs . size Ġ- Ġ 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Render buffer (): ĠRender buffer Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠĠĠĠĠ Ġreturn Ġfake ( 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Shader ( type : ĠInt ): ĠShader ? Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠĠĠĠĠ Ġshaders . add ( Fake Shader ( type )) ĊĠĠĠĠĠĠĠ Ġreturn Ġfake ( shaders . size Ġ- Ġ 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Texture (): ĠTexture Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠĠĠĠĠ Ġtextures . add ( Texture Config ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġfake ( textures . size Ġ- Ġ 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Textures ( n : ĠInt ): ĠArray < Texture > Ġ= ĠArray ( n ) Ġ{ Ġcreate Texture () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate VertexArray (): ĠVertex Array Object Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠĠĠĠĠ Ġreturn Ġfake ( 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġc ull Face ( mode : ĠInt ) Ġ{ Ġcheck Context () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete Buffer ( buffer : ĠGl Buffer ) Ġ{ Ġcheck Context () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete Framebuffer ( framebuffer : ĠFrame buffer ) Ġ{ Ġcheck Context () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete Render buffer ( render buffer : ĠRender buffer ) Ġ{ Ġcheck Context () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete Shader ( shader Id : ĠShader ) Ġ{ Ġcheck Context () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete Texture ( texture : ĠTexture ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠĠĠĠĠ Ġval Ġtexture Config Ġ= Ġtextures [ def ake ( texture )] ĊĠĠĠĠĠĠĠ Ġtexture Config . delete () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete VertexArray ( vertex Array Object : ĠVertex Array Object ) Ġ{ Ġcheck Context () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdisable ( cap : ĠInt ) Ġ{ Ġcheck Context () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdisable VertexAttrib Array ( location : ĠInt ) Ġ{ Ġcheck Context () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdraw Arrays ( mode : ĠInt , Ġfirst : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠĠĠĠĠ Ġactive Program ?. record Render () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġenable ( cap : ĠInt ) Ġ{ Ġcheck Context () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġenable VertexAttrib Array ( location : ĠInt ) Ġ{ Ġcheck Context () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfinish () Ġ{ Ġcheck Context () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġframebuffer Render buffer ( ĊĠĠĠĠĠĠĠ Ġtarget : ĠInt , ĊĠĠĠĠĠĠĠ Ġattachment : ĠInt , ĊĠĠĠĠĠĠĠ Ġrender buff ert arget : ĠInt , ĊĠĠĠĠĠĠĠ Ġrender buffer : ĠRender buffer ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġframebuffer Texture 2 D ( target : ĠInt , Ġattachment : ĠInt , Ġtext arget : ĠInt , Ġtexture : ĠTexture , Ġlevel : ĠInt ) Ġ{ Ġcheck Context () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġgenerate Mip map ( target : ĠInt ) Ġ{ Ġcheck Context () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Attrib Location ( program Id : ĠProgram , Ġname : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠĠĠĠĠ Ġreturn Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Error (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Program Info Log ( program : ĠProgram ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Program Parameter ( program : ĠProgram , Ġpname : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠĠĠĠĠ Ġreturn ĠGL _ TRUE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Shader Info Log ( shader Id : ĠShader ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Shader Parameter ( shader : ĠShader , Ġpname : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠĠĠĠĠ Ġreturn ĠGL _ TRUE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget UniformLocation ( program Id : ĠProgram , Ġname : ĠString ): ĠUniform Location ? Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" CAST _ NE VER _ SU CCE ED S ") ĊĠĠĠĠĠĠĠ Ġreturn Ġprograms [ program Id Ġas ĠInt ]. get UniformLocation ( name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Framebuffer ( framebuffer : ĠFrame buffer ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Render buffer ( render buffer : ĠRender buffer ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlink Program ( program Id : ĠProgram ) Ġ{ Ġcheck Context () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġread Pixels ( ĊĠĠĠĠĠĠĠ Ġx : ĠInt , ĊĠĠĠĠĠĠĠ Ġy : ĠInt , ĊĠĠĠĠĠĠĠ Ġwidth : ĠInt , ĊĠĠĠĠĠĠĠ Ġheight : ĠInt , ĊĠĠĠĠĠĠĠ Ġformat : ĠInt , ĊĠĠĠĠĠĠĠ Ġtype : ĠInt , ĊĠĠĠĠĠĠĠ Ġbuffer : ĠBuffer , ĊĠĠĠĠĠĠĠ Ġoffset : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrender buffer Storage ( target : ĠInt , Ġinternal format : ĠInt , Ġwidth : ĠInt , Ġheight : ĠInt ) Ġ{ Ġcheck Context () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshader Source ( shader Id : ĠShader , Ġsource : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠĠĠĠĠ Ġval Ġfake Shader Ġ= Ġshaders [ shader Id Ġas ĠInt ] ĊĠĠĠĠĠĠĠ Ġfake Shader . src Ġ= Ġsource ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtex Image 2 D ( target : ĠInt , Ġlevel : ĠInt , Ġinternal Format : ĠInt , Ġborder : ĠInt , Ġresource : ĠTexture Resource ) Ġ{ Ġcheck Context () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtex Image 2 D ( ĊĠĠĠĠĠĠĠ Ġtarget : ĠInt , ĊĠĠĠĠĠĠĠ Ġlevel : ĠInt , ĊĠĠĠĠĠĠĠ Ġinternal Format : ĠInt , ĊĠĠĠĠĠĠĠ Ġwidth : ĠInt , ĊĠĠĠĠĠĠĠ Ġheight : ĠInt , ĊĠĠĠĠĠĠĠ Ġborder : ĠInt , ĊĠĠĠĠĠĠĠ Ġformat : ĠInt , ĊĠĠĠĠĠĠĠ Ġtype : ĠInt , ĊĠĠĠĠĠĠĠ Ġbuffer : ĠBuffer , ĊĠĠĠĠĠĠĠ Ġoffset : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠĠĠĠĠ Ġtargets [ target ] !!. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . level Ġ= Ġlevel ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . internal Format Ġ= Ġinternal Format ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . width Ġ= Ġwidth ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . height Ġ= Ġheight ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . border Ġ= Ġborder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . format Ġ= Ġformat ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . type Ġ= Ġtype ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . buffer Ġ= Ġbuffer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . offset Ġ= Ġoffset ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtex Parameter i ( target : ĠInt , Ġpname : ĠInt , Ġvalue : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠĠĠĠĠ Ġtargets [ target ] !!. params [ pname ] Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠUniform Location . set ( value : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" CAST _ NE VER _ SU CCE ED S ") ĊĠĠĠĠĠĠĠ Ġuniform s [ this Ġas ĠInt ] Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġuniform 1 f ( location : ĠUniform Location , Ġf : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠĠĠĠĠ Ġlocation . set ( f ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġuniform 1 i ( location : ĠUniform Location , Ġi : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠĠĠĠĠ Ġlocation . set ( i ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġuniform 2 f ( location : ĠUniform Location , Ġx : ĠFloat , Ġy : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠĠĠĠĠ Ġlocation . set ( listOf ( x , Ġy )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġuniform 2 i ( location : ĠUniform Location , Ġx : ĠInt , Ġy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠĠĠĠĠ Ġlocation . set ( listOf ( x , Ġy )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġuniform 3 f ( location : ĠUniform Location , Ġx : ĠFloat , Ġy : ĠFloat , Ġz : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠĠĠĠĠ Ġlocation . set ( listOf ( x , Ġy , Ġz )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġuniform 3 fv ( location : ĠUniform Location , Ġvalue : ĠFloat Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠĠĠĠĠ Ġlocation . set ( value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġuniform 3 i ( location : ĠUniform Location , Ġx : ĠInt , Ġy : ĠInt , Ġz : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠĠĠĠĠ Ġlocation . set ( listOf ( x , Ġy , Ġz )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġuniform 4 f ( location : ĠUniform Location , Ġx : ĠFloat , Ġy : ĠFloat , Ġz : ĠFloat , Ġw : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠĠĠĠĠ Ġlocation . set ( listOf ( x , Ġy , Ġz , Ġw )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġuniform 4 i ( location : ĠUniform Location , Ġx : ĠInt , Ġy : ĠInt , Ġz : ĠInt , Ġw : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠĠĠĠĠ Ġlocation . set ( listOf ( x , Ġy , Ġz , Ġw )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġuniform Matrix 3 fv ( location : ĠUniform Location , Ġtranspose : ĠBoolean , Ġvalue : ĠFloat Array ) Ġ{ Ġcheck Context () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġuniform Matrix 4 fv ( location : ĠUniform Location , Ġtranspose : ĠBoolean , Ġvalue : ĠFloat Array ) Ġ{ Ġcheck Context () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġuse Program ( program Id : ĠProgram ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" CAST _ NE VER _ SU CCE ED S ") ĊĠĠĠĠĠĠĠ Ġactive Program Ġ= Ġprograms [ program Id Ġas ĠInt ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvertex Attrib Pointer ( ĊĠĠĠĠĠĠĠ Ġlocation : ĠInt , ĊĠĠĠĠĠĠĠ Ġsize : ĠInt , ĊĠĠĠĠĠĠĠ Ġtype : ĠInt , ĊĠĠĠĠĠĠĠ Ġnormalized : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġstride : ĠInt , ĊĠĠĠĠĠĠĠ Ġoffset : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Context () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġviewport ( x : ĠInt , Ġy : ĠInt , Ġwidth : ĠInt , Ġheight : ĠInt ) Ġ{ Ġcheck Context () Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< T > Ġfake ( i : ĠInt ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġreturn Ġi Ġas ĠT ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< T > Ġdef ake ( i : ĠT ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġreturn Ġi Ġas ĠInt ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Texture Config ( texture Unit : ĠInt ): ĠTexture Config ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtexture Units [ texture Unit ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġ< T > Ġdump ( callback : Ġ( Int ) Ġ-> ĠT ): ĠList < T > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarray ListOf < T >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġlist Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġlist . add ( callback ( i ++ )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCool , Ġout Ġof Ġitems . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠByteBuffer . contents () Ġ= Ġdump Ġ{ Ġi Ġ-> Ġthis [ i ] Ġ} ĊĠĠĠĠĠĠĠ Ġfun ĠFloat Buffer . contents () Ġ= Ġdump Ġ{ Ġi Ġ-> Ġthis [ i ] Ġ} ĊĠĠĠĠĠĠĠ Ġfun ĠBuffer . contents () Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠByteBuffer Ġ-> Ġthis . contents () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFloat Buffer Ġ-> Ġthis . contents () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" unknown Ġtype ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠFake Uniform Ġ: ĠUniform Ġ{ ĊĠĠĠ Ġvar Ġvalue : ĠAny ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġset ( x : ĠInt ) Ġ{ Ġvalue Ġ= Ġx Ġ} ĊĠĠĠ Ġoverride Ġfun Ġset ( x : ĠInt , Ġy : ĠInt ) Ġ{ Ġvalue Ġ= ĠlistOf ( x , Ġy ) Ġ} ĊĠĠĠ Ġoverride Ġfun Ġset ( x : ĠInt , Ġy : ĠInt , Ġz : ĠInt ) Ġ{ Ġvalue Ġ= ĠlistOf ( x , Ġy , Ġz ) Ġ} ĊĠĠĠ Ġoverride Ġfun Ġset ( x : ĠFloat ) Ġ{ Ġvalue Ġ= Ġx Ġ} ĊĠĠĠ Ġoverride Ġfun Ġset ( x : ĠFloat , Ġy : ĠFloat ) Ġ{ Ġvalue Ġ= ĠVector 2 F ( x , Ġy ) Ġ} ĊĠĠĠ Ġoverride Ġfun Ġset ( x : ĠFloat , Ġy : ĠFloat , Ġz : ĠFloat ) Ġ{ Ġvalue Ġ= ĠVector 3 F ( x , Ġy , Ġz ) Ġ} ĊĠĠĠ Ġoverride Ġfun Ġset ( x : ĠFloat , Ġy : ĠFloat , Ġz : ĠFloat , Ġw : ĠFloat ) Ġ{ Ġvalue Ġ= ĠVector 4 F ( x , Ġy , Ġz , Ġw ) Ġ} ĊĠĠĠ Ġoverride Ġfun Ġset ( matrix : ĠMatrix 4 ) Ġ{ Ġvalue Ġ= Ġmatrix Ġ} ĊĠĠĠ Ġoverride Ġfun Ġset ( vector 2 F : ĠVector 2 F ) Ġ{ Ġvalue Ġ= Ġvector 2 F Ġ} ĊĠĠĠ Ġoverride Ġfun Ġset ( vector 3 F : ĠVector 3 F ) Ġ{ Ġvalue Ġ= Ġvector 3 F Ġ} ĊĠĠĠ Ġoverride Ġfun Ġset ( vector 4 F : ĠVector 4 F ) Ġ{ Ġvalue Ġ= Ġvector 4 F Ġ} ĊĠĠĠ Ġoverride Ġfun Ġset ( texture Unit : ĠGl Context . Texture Unit ) Ġ{ Ġvalue Ġ= Ġtexture Unit Ġ} Ċ } Ċ Ċ open Ġclass ĠStub Gl sl Program Ġ: ĠGl sl Program Ġ{ ĊĠĠĠ Ġoverride Ġval Ġtitle : ĠString Ġget () Ġ= ĠTODO (" not Ġimplemented ") ĊĠĠĠ Ġoverride Ġval Ġfrag Shader : ĠComp iled Shader Ġget () Ġ= ĠTODO (" not Ġimplemented ") ĊĠĠĠ Ġoverride Ġval Ġvertex Attrib Location : ĠInt Ġget () Ġ= ĠTODO (" not Ġimplemented ") ĊĠĠĠ Ġoverride Ġfun Ġset Resolution ( x : ĠFloat , Ġy : ĠFloat ): ĠUnit Ġ= ĠTODO (" not Ġimplemented ") ĊĠĠĠ Ġoverride Ġfun Ġabout To Render Frame (): ĠUnit Ġ= ĠTODO (" not Ġimplemented ") ĊĠĠĠ Ġoverride Ġfun Ġset Pix Dim ens ( width : ĠInt , Ġheight : ĠInt ) Ġ= ĠTODO (" not Ġimplemented ") ĊĠĠĠ Ġoverride Ġfun Ġabout To Render Fixture ( render Target : ĠRender Target ): ĠUnit Ġ= ĠTODO (" not Ġimplemented ") ĊĠĠĠ Ġoverride Ġfun Ġget Uniform ( name : ĠString ): ĠUniform ? Ġ= ĠTODO (" not Ġimplemented ") ĊĠĠĠ Ġoverride Ġfun Ġ< T > Ġwith Program ( fn : ĠK gl . () Ġ-> ĠT ): ĠT Ġ= ĠTODO (" not Ġimplemented ") ĊĠĠĠ Ġoverride Ġfun Ġuse (): ĠUnit Ġ= ĠTODO (" not Ġimplemented ") ĊĠĠĠ Ġoverride Ġfun Ġrelease (): ĠUnit Ġ= ĠTODO (" not Ġimplemented ") Ġ} Ċ