package Ġcom . zhang www . openg les _ learning . gles . render Ċ Ċ import Ġandroid . opengl . GLES 2 0 Ċ import Ġandroid . opengl . GL Surface View Ċ import Ġcom . zhang www . base module . openg les . GL Util Ċ import Ġcom . zhang www . openg les _ learning . R Ċ import Ġcom . zhang www . openg les _ learning . extensions . app Context Ċ import Ġcom . zhang www . base module . openg les . read Shader From Resource Ċ import Ġjava . nio . Float Buffer Ċ import Ġjavax . micro edition . kh ronos . e gl . EGL Config Ċ import Ġjavax . micro edition . kh ronos . openg les . GL 1 0 ĊĊ Ċ class ĠAir H ock ey Render 2 Ġ: ĠGL Surface View . Renderer Ġ{ ĊĊĠĠĠ Ġ// Ġ é¡¶ çĤ¹ å±ŀæĢ§ ( attribute ) æķ°ç»Ħ ĊĠĠĠ Ġprivate Ġval Ġtable Vertices With Triangles Ġ= Ġfloat ArrayOf ( ĊĊĠĠĠĠĠĠĠ Ġ// [ x , Ġy , Ġr , Ġg , Ġb ] ĊĊĠĠĠĠĠĠĠ Ġ// ĠTriangle ĠF an ĊĠĠĠĠĠĠĠĠ 0 f , Ġ 0 f , Ġ 1 f , Ġ 1 f , Ġ 1 f , ĊĠĠĠĠĠĠĠ Ġ- 0 . 5 f , Ġ- 0 . 5 f , Ġ 0 . 7 f , Ġ 0 . 7 f , Ġ 0 . 7 f , ĊĠĠĠĠĠĠĠĠ 0 . 5 f , Ġ- 0 . 5 f , Ġ 0 . 7 f , Ġ 0 . 7 f , Ġ 0 . 7 f , ĊĠĠĠĠĠĠĠĠ 0 . 5 f , Ġ 0 . 5 f , Ġ 0 . 7 f , Ġ 0 . 7 f , Ġ 0 . 7 f , ĊĠĠĠĠĠĠĠ Ġ- 0 . 5 f , Ġ 0 . 5 f , Ġ 0 . 7 f , Ġ 0 . 7 f , Ġ 0 . 7 f , ĊĠĠĠĠĠĠĠ Ġ- 0 . 5 f , Ġ- 0 . 5 f , Ġ 0 . 7 f , Ġ 0 . 7 f , Ġ 0 . 7 f , ĊĊĠĠĠĠĠĠĠ Ġ// center Ġline ĊĠĠĠĠĠĠĠ Ġ- 0 . 5 f , Ġ 0 f , Ġ 1 f , Ġ 0 f , Ġ 0 f , ĊĠĠĠĠĠĠĠĠ 0 . 5 f , Ġ 0 f , Ġ 0 f , Ġ 0 f , Ġ 1 f , ĊĊĠĠĠĠĠĠĠ Ġ// M allet s ĊĠĠĠĠĠĠĠĠ 0 f , Ġ- 0 . 2 5 f , Ġ 0 f , Ġ 0 f , Ġ 1 f , ĊĠĠĠĠĠĠĠĠ 0 f , Ġ 0 . 2 5 f , Ġ 1 f , Ġ 0 f , Ġ 0 f ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval ĠBY TES _ PER _ FLOAT Ġ= Ġ 4 ĊĊĠĠĠ Ġprivate Ġval ĠPOSITION _ COMPONENT _ COUNT Ġ= Ġ 2 ĊĊĠĠĠ Ġprivate Ġval ĠCOLOR _ COMPONENT _ COUNT Ġ= Ġ 3 ĊĊĊĠĠĠ Ġ// Ġ è·¨ åº¦ ĊĠĠĠ Ġprivate Ġval ĠSTR IDE Ġ= Ġ( POSITION _ COMPONENT _ COUNT Ġ+ ĠCOLOR _ COMPONENT _ COUNT ) Ġ* ĠBY TES _ PER _ FLOAT ĊĊĠĠĠ Ġprivate Ġval Ġvertex Data : ĠFloat Buffer Ġ= ĊĠĠĠĠĠĠĠ ĠGL Util . create Float Buffer ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtable Vertices With Triangles ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġvar Ġprogram Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġa Position Location Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġa Color Location Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun Ġon Surface Created ( gl : ĠGL 1 0 ?, Ġconfig : ĠE GL Config ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ å¯¹åºĶ RGBA , Ġ èĮĥåĽ´ ä¸º [ 0 f , Ġ 1 f ] ĊĠĠĠĠĠĠĠ ĠGLES 2 0 . gl Clear Color ( 0 f , Ġ 0 f , Ġ 0 f , Ġ 0 f ) ĊĊĠĠĠĠĠĠĠ Ġval Ġvertex Shader Ġ= Ġread Shader From Resource ( app Context , ĠR . raw . simple _ vertex _ shader 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġfragment Shader Ġ= Ġread Shader From Resource ( app Context , ĠR . raw . simple _ fragment _ shader 2 ) ĊĠĠĠĠĠĠĠ Ġprogram Ġ= ĠGL Util . create Program ( vertex Shader , Ġfragment Shader ) ĊĊĠĠĠĠĠĠĠ ĠGLES 2 0 . gl Use Program ( program ) ĊĊĠĠĠĠĠĠĠ Ġa Color Location Ġ= ĠGLES 2 0 . glGet Attrib Location ( program , ĠA _ COLOR ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġèİ·åıĸ Ġattribute Ġ ä½įç½® ĊĠĠĠĠĠĠĠ Ġa Position Location Ġ= ĠGLES 2 0 . glGet Attrib Location ( program , ĠA _ POSITION ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ åħ³èģĶ å±ŀæĢ§ ä¸İ é¡¶ çĤ¹ æķ°æį®çļĦ æķ°ç»Ħ ĊĠĠĠĠĠĠĠ ĠGLES 2 0 . glVertex Attrib Pointer ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa Position Location , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPOSITION _ COMPONENT _ COUNT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . GL _ FLOAT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSTR IDE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertex Data ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ ä½¿ èĥ½ é¡¶ çĤ¹ æķ°ç»Ħ ĊĠĠĠĠĠĠĠ ĠGLES 2 0 . gl Enable VertexAttrib Array ( a Position Location ) ĊĊĠĠĠĠĠĠĠ Ġvertex Data . position ( POSITION _ COMPONENT _ COUNT ) ĊĊĠĠĠĠĠĠĠ ĠGLES 2 0 . glVertex Attrib Pointer ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa Color Location , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOLOR _ COMPONENT _ COUNT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . GL _ FLOAT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSTR IDE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertex Data ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠGLES 2 0 . gl Enable VertexAttrib Array ( a Color Location ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Surface Changed ( gl : ĠGL 1 0 ?, Ġwidth : ĠInt , Ġheight : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġset Ġthe ĠOpenGL Ġviewport ĊĠĠĠĠĠĠĠ ĠGLES 2 0 . gl Viewport ( 0 , Ġ 0 , Ġwidth , Ġheight ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Draw Frame ( gl : ĠGL 1 0 ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġclear Ġthe Ġrendering Ġsurface ĊĠĠĠĠĠĠĠ ĠGLES 2 0 . gl Clear ( GLES 2 0 . GL _ COLOR _ BUFFER _ BIT ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġdraw Ġground ĊĠĠĠĠĠĠĠ ĠGLES 2 0 . gl Draw Arrays ( GLES 2 0 . GL _ TRI ANGLE _ F AN , Ġ 0 , Ġ 6 ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġdraw Ġline ĊĠĠĠĠĠĠĠ ĠGLES 2 0 . gl Draw Arrays ( GLES 2 0 . GL _ LINES , Ġ 6 , Ġ 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġdraw Ġpoint ĊĠĠĠĠĠĠĠ ĠGLES 2 0 . gl Draw Arrays ( GLES 2 0 . GL _ POINTS , Ġ 8 , Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġdraw Ġpoint ĊĠĠĠĠĠĠĠ ĠGLES 2 0 . gl Draw Arrays ( GLES 2 0 . GL _ POINTS , Ġ 9 , Ġ 1 ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠA _ POSITION Ġ= Ġ" a _ Position " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠA _ COLOR Ġ= Ġ" a _ Color " ĊĠĠĠ Ġ} Ċ }