package Ġm og ot . gl Ċ Ċ import Ġpw . bin om . io . Closeable Ċ Ċ class ĠTexture Object ( val Ġgl : ĠGL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġvar Ġwidth : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġvar Ġheight : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmin Filter : ĠMin Filter Parameter Ġ= ĠMin Filter Parameter . Linear , Ġval Ġmag Filter : ĠMag Filter Parameter Ġ= ĠMag Filter Parameter . Linear , Ġval Ġtexture Wrap S : ĠTexture Wrap Ġ= ĠTexture Wrap . Repeat , Ġval Ġtexture Wrap T : ĠTexture Wrap Ġ= ĠTexture Wrap . Repeat , Ġval Ġmultis ample : ĠM SA AL e vel s Ġ= ĠM SA AL e vel s . Disable , Ġval Ġformat : ĠFormat Ġ= ĠFormat . RGB , Ġval Ġmip Maps : ĠInt Ġ= Ġ 0 ) Ġ: ĠClose able Ġ{ ĊĠĠĠ Ġenum Ġclass ĠMag Filter Parameter Ġ{ ĊĠĠĠĠĠĠĠ ĠNe arest , ĊĠĠĠĠĠĠĠ ĠLinear ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠFormat Ġ{ ĊĠĠĠĠĠĠĠ ĠRGB , ĊĠĠĠĠĠĠĠ ĠRGBA , ĊĠĠĠĠĠĠĠ ĠDEP TH _ COMPONENT ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠMin Filter Parameter Ġ{ ĊĠĠĠĠĠĠĠ ĠNe arest , ĊĠĠĠĠĠĠĠ ĠLinear , ĊĠĠĠĠĠĠĠ ĠNe arest Mip map Nearest , ĊĠĠĠĠĠĠĠ ĠLinear Mip map Nearest , ĊĠĠĠĠĠĠĠ ĠNe arest Mip map Linear , ĊĠĠĠĠĠĠĠ ĠLinear Mip map Linear ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠTexture Wrap Ġ{ ĊĠĠĠĠĠĠĠ ĠCl amp To Edge , ĊĠĠĠĠĠĠĠ ĠMir rored Repeat , ĊĠĠĠĠĠĠĠ ĠRepeat ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠM SA AL e vel s ( val Ġlevel : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠDisable ( 0 ), ĊĠĠĠĠĠĠĠ ĠMS AA x 4 ( 4 ), ĊĠĠĠĠĠĠĠ ĠMS AA x 8 ( 8 ), ĊĠĠĠĠĠĠĠ ĠMS AA x 1 6 ( 1 6 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġgl Texture : ĠGL Texture Ġ= Ġgl . create Texture () ĊĠĠĠ Ġval Ġtarget Ġ= Ġif Ġ( multis ample Ġ!= ĠM SA AL e vel s . Disable ) Ġgl . TEXTURE _ 2 D _ MULT IS AMPLE Ġelse Ġgl . TEXTURE _ 2 D ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġgl . enable ( gl . TEXTURE _ 2 D ) ĊĠĠĠĠĠĠĠ Ġgl . check Error Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Can 't Ġenable Ġtexture " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbind () ĊĠĠĠĠĠĠĠ Ġif Ġ( multis ample Ġ== ĠM SA AL e vel s . Disable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgl . tex Parameter i ( target , Ġgl . TEXTURE _ MIN _ FILTER , Ġwhen Ġ( min Filter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMin Filter Parameter . Nearest Ġ-> Ġgl . NE ARE ST ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMin Filter Parameter . Linear Ġ-> Ġgl . LINEAR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMin Filter Parameter . Nearest Mip map Nearest Ġ-> Ġgl . NE ARE ST _ MIP MAP _ NE ARE ST ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMin Filter Parameter . Linear Mip map Nearest Ġ-> Ġgl . LINEAR _ MIP MAP _ NE ARE ST ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMin Filter Parameter . Nearest Mip map Linear Ġ-> Ġgl . NE ARE ST _ MIP MAP _ LINEAR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMin Filter Parameter . Linear Mip map Linear Ġ-> Ġgl . LINEAR _ MIP MAP _ LINEAR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgl . check Error Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Can 't Ġset Ġtexture Ġparams " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgl . tex Parameter i ( target , Ġgl . TEXTURE _ MAG _ FILTER , Ġwhen Ġ( mag Filter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMag Filter Parameter . Nearest Ġ-> Ġgl . NE ARE ST ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMag Filter Parameter . Linear Ġ-> Ġgl . LINEAR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgl . check Error Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Can 't Ġset Ġtexture Ġparams " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgl . tex Parameter i ( target , Ġgl . TEXTURE _ WRAP _ S , Ġwhen Ġ( texture Wrap S ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTexture Wrap . Clamp To Edge Ġ-> Ġgl . CLAMP _ TO _ EDGE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTexture Wrap . Mir rored Repeat Ġ-> Ġgl . MIR RO RED _ REPEAT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTexture Wrap . Repeat Ġ-> Ġgl . REPEAT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgl . check Error Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Can 't Ġset Ġtexture Ġparams " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgl . tex Parameter i ( target , Ġgl . TEXTURE _ WRAP _ T , Ġwhen Ġ( texture Wrap T ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTexture Wrap . Clamp To Edge Ġ-> Ġgl . CLAMP _ TO _ EDGE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTexture Wrap . Mir rored Repeat Ġ-> Ġgl . MIR RO RED _ REPEAT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTexture Wrap . Repeat Ġ-> Ġgl . REPEAT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgl . check Error Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Can 't Ġset Ġtexture Ġparams " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( min Filter Ġ!= ĠMin Filter Parameter . Nearest ) Ġ&& Ġ( min Filter Ġ!= ĠMin Filter Parameter . Linear )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgl . tex Parameter i ( target , Ġgl . TEXTURE _ MAX _ LEVEL , Ġmip Maps ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgl . generate Mip map ( gl . TEXTURE _ 2 D ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgl . check Error Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Can 't Ġset Ġtexture Ġparams " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġresize ( width , height ) ĊĠĠĠĠĠĠĠ Ġun bind () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbind () Ġ{ ĊĠĠĠĠĠĠĠ Ġgl . bind Texture ( target , Ġgl Texture ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġun bind () Ġ{ ĊĠĠĠĠĠĠĠ Ġgl . bind Texture ( target , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclose () Ġ{ ĊĠĠĠĠĠĠĠ Ġgl . disable ( target ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġenable () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( multis ample Ġ!= ĠM SA AL e vel s . Disable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgl . enable ( gl . MULT IS AMPLE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdisable () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( multis ample Ġ!= ĠM SA AL e vel s . Disable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgl . disable ( gl . MULT IS AMPLE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġresize ( w : ĠInt , Ġh : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwidth Ġ= Ġw ĊĠĠĠĠĠĠĠ Ġheight Ġ= Ġh ĊĠĠĠĠĠĠĠ Ġbind () ĊĠĠĠĠĠĠĠ Ġif Ġ( multis ample Ġ!= ĠM SA AL e vel s . Disable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgl . tex Image 2 DM ult is ample ( gl . TEXTURE _ 2 D _ MULT IS AMPLE , Ġmultis ample . level , Ġwhen Ġ( format ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFormat . RGB Ġ-> Ġgl . RGB ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFormat . RGBA Ġ-> Ġgl . RGBA ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFormat . DEPTH _ COMPONENT Ġ-> Ġgl . DEPTH _ COMP ON EN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġwidth , Ġheight , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgl . tex Image 2 D ( gl . TEXTURE _ 2 D , Ġ 0 , Ġwhen Ġ( format ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFormat . RGB Ġ-> Ġgl . RGB ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFormat . RGBA Ġ-> Ġgl . RGBA ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFormat . DEPTH _ COMPONENT Ġ-> Ġgl . DEPTH _ COMP ON EN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġwidth , Ġheight , Ġ 0 , Ġgl . RGB , Ġgl . UNSIGNED _ BYTE , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġgl . check Error Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Can 't Ġcreate Ġtexture " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġun bind () ĊĠĠĠ Ġ} ĊĊ Ċ }