package Ġmain . tut 0 3 Ċ Ċ import Ġcom . j og amp . new t . event . KeyEvent Ċ import Ġcom . j og amp . opengl . GL . GL _ ARRAY _ BUFFER Ċ import Ġcom . j og amp . opengl . GL . GL _ STATIC _ DRAW Ċ import Ġcom . j og amp . opengl . GL 2 ES 3 . GL _ COLOR Ċ import Ġcom . j og amp . opengl . GL 3 Ċ import Ġgl Next .* Ċ import Ġmain . framework . Framework Ċ import Ġuno . buffer . destroy Buffers Ċ import Ġuno . buffer . float Buffer Of Ċ import Ġuno . buffer . int Buffer Big Ċ import Ġuno . glsl . program Of Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġelect Ġon Ġ 2 1 / 0 2 / 1 7 . Ċ Ġ*/ Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ ĠF rag Change Color _ (). setup (" Tutorial Ġ 0 3 Ġ- ĠF rag ĠChange ĠColor ") Ċ } Ċ Ċ class ĠF rag Change Color _ Ġ: ĠFramework () Ġ{ ĊĊĠĠĠ Ġvar Ġthe Program Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġelapsed Time Uniform Ġ= Ġ 0 ĊĠĠĠ Ġval Ġposition Buffer Object Ġ= Ġint Buffer Big ( 1 ) ĊĠĠĠ Ġval Ġv ao Ġ= Ġint Buffer Big ( 1 ) ĊĠĠĠ Ġval Ġvertex Positions Ġ= Ġfloat Buffer Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ+ 0 . 2 5 f , Ġ+ 0 . 2 5 f , Ġ 0 . 0 f , Ġ 1 . 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ+ 0 . 2 5 f , Ġ- 0 . 2 5 f , Ġ 0 . 0 f , Ġ 1 . 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- 0 . 2 5 f , Ġ- 0 . 2 5 f , Ġ 0 . 0 f , Ġ 1 . 0 f ) ĊĠĠĠ Ġvar Ġstarting Time Ġ= Ġ 0 L ĊĊĠĠĠ Ġoverride Ġfun Ġinit ( gl : ĠGL 3 ) Ġ= Ġwith ( gl ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinitialize Program ( gl ) ĊĠĠĠĠĠĠĠ Ġinitialize VertexBuffer ( gl ) ĊĊĠĠĠĠĠĠĠ Ġgl Gen Vertex Arrays ( 1 , Ġv ao ) ĊĠĠĠĠĠĠĠ ĠglBind VertexArray ( v ao [ 0 ]) ĊĊĠĠĠĠĠĠĠ Ġstarting Time Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinitialize Program ( gl : ĠGL 3 ) Ġ= Ġwith ( gl ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġthe Program Ġ= Ġprogram Of ( gl , Ġjava Class , Ġ" tut 0 3 ", Ġ" calc - offset . vert ", Ġ" calc - color . frag ") ĊĊĠĠĠĠĠĠĠ Ġelapsed Time Uniform Ġ= ĠglGet UniformLocation ( the Program , Ġ" time ") ĊĊĠĠĠĠĠĠĠ Ġval Ġloop Duration Un f Ġ= ĠglGet UniformLocation ( the Program , Ġ" loop Duration ") ĊĠĠĠĠĠĠĠ Ġval Ġfrag Loop Dur Un f Ġ= ĠglGet UniformLocation ( the Program , Ġ" frag Loop Duration ") ĊĊĠĠĠĠĠĠĠ Ġgl Use Program ( the Program ) ĊĠĠĠĠĠĠĠ Ġgl Uniform 1 f ( loop Duration Un f , Ġ 5 f ) ĊĠĠĠĠĠĠĠ Ġgl Uniform 1 f ( frag Loop Dur Un f , Ġ 1 0 f ) ĊĠĠĠĠĠĠĠ Ġgl Use Program () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinitialize VertexBuffer ( gl : ĠGL 3 ) Ġ= Ġwith ( gl ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġgl Gen Buffer ( position Buffer Object ) ĊĊĠĠĠĠĠĠĠ ĠglBind Buffer ( GL _ ARRAY _ BUFFER , Ġposition Buffer Object ) ĊĠĠĠĠĠĠĠ Ġgl BufferData ( GL _ ARRAY _ BUFFER , Ġvertex Positions , ĠGL _ STATIC _ DRAW ) ĊĠĠĠĠĠĠĠ ĠglBind Buffer ( GL _ ARRAY _ BUFFER ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdisplay ( gl : ĠGL 3 ) Ġ= Ġwith ( gl ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġgl Clear Buffer f ( GL _ COLOR , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġgl Use Program ( the Program ) ĊĊĠĠĠĠĠĠĠ Ġgl Uniform 1 f ( elapsed Time Uniform , Ġ( System . currentTimeMillis () Ġ- Ġstarting Time ) Ġ/ Ġ 1 _ 0 0 0 f ) ĊĊĠĠĠĠĠĠĠ ĠglBind Buffer ( GL _ ARRAY _ BUFFER , Ġposition Buffer Object ) ĊĠĠĠĠĠĠĠ Ġgl Enable VertexAttrib Array ( g lf . pos 4 ) ĊĠĠĠĠĠĠĠ ĠglVertex Attrib Pointer ( g lf . pos 4 ) ĊĊĠĠĠĠĠĠĠ Ġgl Draw Arrays ( 3 ) ĊĊĠĠĠĠĠĠĠ Ġgl Disable VertexAttrib Array ( g lf . pos 4 ) ĊĊĠĠĠĠĠĠĠ Ġgl Use Program () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġreshape ( gl : ĠGL 3 , Ġw : ĠInt , Ġh : ĠInt ) Ġ= Ġwith ( gl ){ ĊĠĠĠĠĠĠĠ Ġgl Viewport ( w , Ġh ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġend ( gl : ĠGL 3 ) Ġ= Ġwith ( gl ){ ĊĊĠĠĠĠĠĠĠ Ġgl Delete Program ( the Program ) ĊĠĠĠĠĠĠĠ Ġgl Delete Buffers ( position Buffer Object ) ĊĠĠĠĠĠĠĠ Ġgl Delete Vertex Arrays ( v ao ) ĊĊĠĠĠĠĠĠĠ Ġdestroy Buffers ( position Buffer Object , Ġv ao , Ġvertex Positions ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġkey Pressed ( key Event : ĠKeyEvent ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( key Event . keyCode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyEvent . VK _ ESCAPE Ġ-> Ġquit () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }