/* Ċ ĉ Flow er box Ċ ĉ Copyright Ġ 2 0 1 8 ĠK ay ate ia ĊĊ ĉ Please Ġsee ĠLICENSE . txt Ġin Ġthe Ġroot Ġof Ġthe Ġproject Ġfor Ġmore Ġdetails . Ċ Ġ*/ Ċ Ċ package Ġnet . k ay ate ia . flower box . client Ċ Ċ import Ġorg . lwjgl . opengl . GL 1 1 .* Ċ import Ġs lim . texture . io . PNG Decoder Ċ import Ġjava . io . File Ċ import Ġjava . nio . ByteBuffer Ċ import Ġjava . nio . Byte Order Ċ Ċ class ĠSingle Texture ( val Ġfilename : ĠString ) Ġ{ Ċ ĉ val Ġgl Texture Id : ĠInt Ġby Ġlazy Ġ{ Ġgen Texture Id () Ġ} ĊĊ ĉ private Ġfun Ġgen Texture Id (): ĠInt Ġ{ Ċĉ ĉ val Ġdecoder Ġ= ĠPNG Decoder ( File ( filename ). to URI (). to URL (). open Stream ()) Ċĉ ĉ val Ġbuffer Ġ= ĠByteBuffer . allocate Direct ( decoder . width Ġ* Ġdecoder . height Ġ* Ġ 4 ) Ċĉ ĉ buffer . order ( Byte Order . native Order ()) Ċĉ ĉ decoder . decode ( buffer , Ġdecoder . width Ġ* Ġ 4 , ĠPNG Decoder . Format . RGBA ) Ċĉ ĉ buffer . flip () ĊĊĉ ĉ val Ġtx r Id Ġ= Ġgl Gen Textures () Ċĉ ĉ glBind Texture ( GL _ TEXTURE _ 2 D , Ġtx r Id ) Ċĉ ĉ gl TexParameter i ( GL _ TEXTURE _ 2 D , ĠGL _ TEXTURE _ MAG _ FILTER , ĠGL _ LINEAR ) Ċĉ ĉ gl TexParameter i ( GL _ TEXTURE _ 2 D , ĠGL _ TEXTURE _ MIN _ FILTER , ĠGL _ LINEAR ) Ċĉ ĉ gl TexImage 2 D ( GL _ TEXTURE _ 2 D , Ġ 0 , ĠGL _ RGB , Ġdecoder . width , Ġdecoder . height , Ġ 0 , ĠGL _ RGBA , ĠGL _ UNSIGNED _ BYTE , Ġbuffer ) ĊĊĉ ĉ return Ġtx r Id Ċ ĉ } Ċ } Ċ