package Ġgl Next . tut 0 3 Ċ Ċ import Ġcom . j og amp . new t . event . KeyEvent Ċ import Ġcom . j og amp . opengl . GL .* Ċ 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 _ Next (). setup (" Tutorial Ġ 0 3 Ġ- ĠF rag ĠChange ĠColor ") Ċ } Ċ Ċ class ĠF rag Change Color _ Next Ġ: Ġ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 VertexArray ( v ao ) ĊĠĠĠĠĠĠĠ ĠglBind VertexArray ( v ao ) ĊĊĠĠĠĠĠĠĠ Ġ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 ") ĊĊĠĠĠĠĠĠĠ Ġwith Program ( the Program ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġelapsed Time Uniform Ġ= Ġ" time ". location ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" loop Duration ". location . float Ġ= Ġ 5 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" frag Loop Duration ". location . float Ġ= Ġ 5 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinitialize VertexBuffer ( gl : ĠGL 3 ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgl . init ArrayBuffer ( position Buffer Object ) Ġ{ Ġdata ( vertex Positions , ĠGL _ STATIC _ DRAW ) Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdisplay ( gl : ĠGL 3 ) Ġ= Ġwith ( gl ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġclear Ġ{ Ġcolor ( 0 ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġusing Program ( the Program ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġelapsed Time Uniform . float Ġ= Ġ( System . currentTimeMillis () Ġ- Ġstarting Time ) Ġ/ Ġ 1 _ 0 0 0 f ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Vertex Layout ( position Buffer Object , Ġg lf . pos 4 ) Ġ{ Ġgl Draw Arrays ( 3 ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ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 Buffer ( position Buffer Object ) ĊĠĠĠĠĠĠĠ Ġgl Delete VertexArray ( 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 () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }