package Ġcom . alex . graphics . gl Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . opengl . GLES 3 0 .* Ċ import Ġandroid . opengl . GL Surface View Ċ import Ġandroid . opengl . GL Utils Ċ import Ġandroid . opengl . Matrix Ċ import Ġcom . alex . graphics . R Ċ import Ġjavax . micro edition . kh ronos . openg les . GL 1 0 ĊĊ Ċ class ĠSDK GL Renderer ( val Ġctx : ĠContext ) Ġ: ĠGL Surface View . Renderer Ġ{ ĊĊĠĠĠ Ġval Ġstar : ĠStar ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġsquare : ĠSquare ? Ġ= Ġnull ĊĠĠĠ Ġval Ġm Projection Matrix Ġ= ĠFloat Array ( 1 6 ) ĊĠĠĠ Ġvar Ġm Rotation Matrix Ġ= ĠFloat Array ( 1 6 ) ĊĊĠĠĠ Ġvar Ġtexture ID Ġ= ĠInt Array ( 1 ) ĊĊĠĠĠ Ġ@ Volatile ĊĠĠĠ Ġvar Ġangle X : ĠFloat Ġ= Ġ 0 f ĊĠĠĠ Ġ@ Volatile ĊĠĠĠ Ġvar Ġangle Y : ĠFloat Ġ= Ġ 0 f ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Surface Created ( gl : ĠGL 1 0 ?, Ġconfig : Ġjavax . micro edition . kh ronos . e gl . EGL Config ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġgl Clear Color ( 0 . 9 f , Ġ 1 f , Ġ 0 . 9 f , Ġ 1 f ) ĊĊĠĠĠĠĠĠĠ Ġ// load Ġtextures ĊĠĠĠĠĠĠĠ Ġgl Gen Textures ( 1 , Ġtexture ID , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= ĠBitmap Factory . Options () ĊĠĠĠĠĠĠĠ Ġoptions . in Scaled Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= ĠBitmap Factory . decode Resource ( ctx . getResources (), ĠR . drawable . t 1 , Ġoptions ) ĊĊĠĠĠĠĠĠĠ Ġgl Active Texture ( GL _ TEXTURE 0 ) ĊĠĠĠĠĠĠĠ ĠglBind Texture ( GL _ TEXTURE _ 2 D , Ġtexture ID [ 0 ]) ĊĊĠĠĠĠĠĠĠ Ġgl TexParameter i ( GL _ TEXTURE _ 2 D , ĠGL _ TEXTURE _ MIN _ FILTER , ĠGL _ LINEAR ) ĊĠĠĠĠĠĠĠ Ġgl TexParameter i ( GL _ TEXTURE _ 2 D , ĠGL _ TEXTURE _ MAG _ FILTER , ĠGL _ LINEAR ) ĊĊĠĠĠĠĠĠĠ ĠGL Utils . tex Image 2 D ( GL _ TEXTURE _ 2 D , Ġ 0 , Ġbitmap , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġbitmap . recycle () ĊĠĠĠĠĠĠĠ ĠglBind Texture ( GL _ TEXTURE _ 2 D , Ġ 0 ) Ġ// Un bind ĊĊĠĠĠĠĠĠĠ Ġsquare Ġ= ĠSquare ( texture ID [ 0 ]) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Surface Changed ( gl 1 0 : ĠGL 1 0 , Ġw : ĠInt , Ġh : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgl Viewport ( 0 , Ġ 0 , Ġw , Ġh ) ĊĠĠĠĠĠĠĠ Ġval Ġratio Ġ= Ġif Ġ( w Ġ> Ġh ) Ġw . toFloat () Ġ/ Ġh Ġelse Ġh . toFloat () Ġ/ Ġw ĊĠĠĠĠĠĠĠ Ġif Ġ( w Ġ> Ġh ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMatrix . orth o M ( m Projection Matrix , Ġ 0 , Ġ- ratio , Ġratio , Ġ- 1 f , Ġ 1 f , Ġ- 1 f , Ġ 1 f ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMatrix . orth o M ( m Projection Matrix , Ġ 0 , Ġ- 1 f , Ġ 1 f , Ġ- ratio , Ġratio , Ġ- 1 f , Ġ 1 f ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw Frame ( gl 1 0 : ĠGL 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgl Clear ( GL _ COLOR _ BUFFER _ BIT Ġor ĠGL _ DEPTH _ BUFFER _ BIT ) ĊĊĠĠĠĠĠĠĠ ĠMatrix . set Identity M ( m Rotation Matrix , Ġ 0 ) ĊĠĠĠĠĠĠĠ ĠMatrix . rotate M ( m Rotation Matrix , Ġ 0 , Ġangle X , Ġ 0 f , Ġ 1 f , Ġ 0 f ) ĊĠĠĠĠĠĠĠ ĠMatrix . rotate M ( m Rotation Matrix , Ġ 0 , Ġangle Y , Ġ 1 f , Ġ 0 f , Ġ 0 f ) ĊĊĠĠĠĠĠĠĠ Ġval Ġscratch Ġ= ĠFloat Array ( 1 6 ) ĊĊĠĠĠĠĠĠĠ ĠMatrix . multiply MM ( scratch , Ġ 0 , Ġm Projection Matrix , Ġ 0 , Ġm Rotation Matrix , Ġ 0 ); ĊĊĠĠĠĠĠĠĠ Ġsquare !!. draw ( scratch ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġload Shader ( type : ĠInt , Ġshader Code : ĠString ) Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshader Ġ= Ġgl Create Shader ( type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgl Shader Source ( shader , Ġshader Code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgl Compile Shader ( shader ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshader ĊĠĠĠĠĠĠĠ Ġ} () ĊĠĠĠ Ġ} Ċ } ĊĊĊ