package Ġcom . jad yn . ai . media learn . gles . render Ċ Ċ import Ġandroid . opengl . GLES 2 0 Ċ import Ġandroid . opengl . GL Surface View Ċ import Ġandroid . util . Log Ċ import Ġcom . jad yn . ai . kot l ind . utils . create Float Buffer Ċ import Ġcom . jad yn . medi akit . gl . create Program Ċ import Ġcom . jad yn . medi akit . gl . get Attrib Location Ċ import Ġjava . nio . ByteBuffer Ċ import Ġjava . nio . Byte Order Ċ import Ġjava . nio . Int Buffer Ċ import Ġjavax . micro edition . kh ronos . e gl . EGL Config Ċ import Ġjavax . micro edition . kh ronos . openg les . GL 1 0 Ċ Ċ /** Ċ Ġ*@ version : Ċ Ġ*@ File Description : Ġæµ ĭ è¯ķ Draw Elements Ċ Ġ*@ Author : J ing Ċ Ġ*@ Since : 2 0 1 9 - 0 7 - 0 9 Ċ Ġ*@ Change List : Ċ Ġ*/ Ċ class ĠDraw Elements Render Ġ: ĠGL Surface View . Renderer Ġ{ ĊĠĠĠ Ġprivate Ġval ĠV ERT EX _ SHADER Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattribute Ġvec 4 Ġposition ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvoid Ġmain (){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgl _ Position Ġ= Ġposition ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠ Ġprivate Ġval ĠFR AG MENT _ SHADER Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprecision Ġmedi ump Ġfloat ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvoid Ġmain (){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgl _ Frag Color Ġ= Ġvec 4 ( 0 , Ġ 1 , Ġ 0 , Ġ 1 ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠ Ġ// Ġ æľĢ åİŁå§ĭ çļĦ åĨĻ æ³ķ ï¼Į è¦ģ ç»ĺ åĪ¶ 6 ä¸ª é¡¶ çĤ¹ ï¼Į ä¸¤ä¸ª ä¸ī è§Ĵ å½¢ ãĢĤ ä½Ĩæĺ¯ æľī ä¸¤ä¸ª éĩįå¤į åĢ¼ ĊĠĠĠ Ġprivate Ġval Ġraw Vertex Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġfloat ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ å·¦ ä¾§ ä¸ī è§Ĵ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 0 . 8 f , Ġ 1 f , Ġ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 0 . 8 f , Ġ- 1 f , Ġ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 . 8 f , Ġ- 1 f , Ġ 0 f , ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åı³ ä¾§ ä¸ī è§Ĵ ï¼Į ä¸¤ä¸ª ä¸ī è§Ĵ æĭ ¼ æĪĲ ä¸Ģä¸ª éķ¿ æĸ¹ å½¢ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 . 8 f , Ġ- 1 f , Ġ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 . 8 f , Ġ 1 f , Ġ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 0 . 8 f , Ġ 1 f , Ġ 0 f ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġvertex Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġfloat ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ è¦ģ çĶ» ä¸Ģä¸ª éķ¿ æĸ¹ å½¢ ï¼Į åıª éľĢè¦ģ åĽĽ ä¸ª é¡¶ çĤ¹ ãĢĤ çĦ¶åĲİ å®ļ åĪ¶ ä¸Ģä¸ª é¡ºåºı åĪĹè¡¨ ï¼Į æĮīçħ§ é¡ºåºı åĪĹè¡¨ ç»ĺ åĪ¶ ä¸¤ä¸ª ä¸ī è§Ĵ å½¢ åĩºæĿ¥ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 0 . 8 f , Ġ 1 f , Ġ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 0 . 8 f , Ġ- 1 f , Ġ 0 f , ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 . 8 f , Ġ- 1 f , Ġ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 . 8 f , Ġ 1 f , Ġ 0 f ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ éķ¿ æĸ¹ å½¢ æľī åĽĽ ä¸ª é¡¶ çĤ¹ ï¼Į ä½Ĩæĺ¯ ç»ĺ åĪ¶ çļĦæĹ¶åĢĻ è¿ĺæĺ¯ è¦ģ ç»ĺ åĪ¶ ä¸¤ä¸ª ä¸ī è§Ĵ å½¢ ãĢĤ åį³ åħŃ ä¸ª çĤ¹ ãĢĤ è¿ĻéĩĮ æĺ¯ é¡ºåºı ĊĠĠĠ Ġ// Ġ çº¿ ç»ĺ åĪ¶ Ġvertex ĠçļĦ ç¬¬ä¸Ģä¸ª é¡¶ çĤ¹ ï¼Į çĦ¶åĲİ ç»ĺ åĪ¶ åħ¶ä»ĸ çļĦ ĊĠĠĠ Ġprivate Ġval Ġindices Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġbyte ArrayOf ( 0 , Ġ 1 , Ġ 2 , Ġ 2 , Ġ 3 , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġindices Buffer Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠByteBuffer . allocate ( indices . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. order ( Byte Order . native Order ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put ( indices ) ĊĠĠĠĠĠĠĠ Ġbuffer . position ( 0 ) ĊĠĠĠĠĠĠĠ Ġbuffer ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ------ Int Buffer æµĭè¯ķ ----- ĠĠĠĠ ĊĠĠĠĠ Ġprivate Ġval Ġindices Ints Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġint ArrayOf ( 0 , Ġ 1 , Ġ 2 , Ġ 2 , Ġ 3 , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġindices Int Buffer Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠInt Buffer . allocate ( indices . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put ( indices Ints ) ĊĠĠĠĠĠĠĠ Ġbuffer . position ( 0 ) ĊĠĠĠĠĠĠĠ Ġbuffer ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠĠĊĠĠĠ Ġprivate Ġval Ġvertex Buffer Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfloat Buffer Ġ= Ġcreate Float Buffer ( vertex ) ĊĠĠĠĠĠĠĠ ĠLog . d (" ce ce ", Ġ" buffer Ġpos Ġ: Ġ${ float Buffer . position () }") ĊĠĠĠĠĠĠĠ Ġfloat Buffer ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw Frame ( gl : ĠGL 1 0 ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠGLES 2 0 . gl Clear ( GLES 2 0 . GL _ COLOR _ BUFFER _ BIT ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġä½¿çĶ¨ ç´¢å¼ķ ç¼ĵ åĨ² æ¸²æŁĵ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠĠĠĠĠ Ġ// ĠType Ġè®¾ç½® ä¸º GL _ UNSIGNED _ BYTE ï¼Į éĤ£ä¹Ī indices Buffer çļĦæķ°æį® ç±»åŀĭ å°± ä¸º ByteBuffer ĊĠĠĠĠĠĠĠ ĠGLES 2 0 . gl Draw Elements ( GLES 2 0 . GL _ TRI ANG LES , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindices . size , ĠGLES 2 0 . GL _ UNSIGNED _ BYTE , Ġindices Buffer ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠInt Ġ ç±»åŀĭ æ¬¡ åºı ï¼Į æµĭè¯ķ åı¯ è¡Į Ċ // ĠĠĠĠĠĠĠ ĠGLES 2 0 . gl Draw Elements ( GLES 2 0 . GL _ TRI ANG LES , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindices Ints . size , ĠGLES 2 0 . GL _ UNSIGNED _ INT , Ġindices Int Buffer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Surface Changed ( gl : ĠGL 1 0 ?, Ġwidth : ĠInt , Ġheight : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠGLES 2 0 . gl Viewport ( 0 , Ġ 0 , Ġwidth , Ġheight ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Surface Created ( gl : ĠGL 1 0 ?, Ġconfig : ĠE GL Config ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġvertex Buffer . position ( 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġprogram Ġ= Ġcreate Program ( VERTEX _ SHADER , ĠFR AG MENT _ SHADER ) ĊĠĠĠĠĠĠĠ Ġval Ġpos Ġ= Ġget Attrib Location ( program , Ġ" position ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġ åħģè®¸ é¡¶ çĤ¹ çĿĢ èī² åĻ¨ ï¼Į è¯»åıĸ GPU çļĦæķ°æį® ï¼Į åĲ¯çĶ¨ æĮĩå®ļ å±ŀæĢ§ ĊĠĠĠĠĠĠĠ ĠGLES 2 0 . gl Enable VertexAttrib Array ( pos ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġæ¯ı éļĶ 3 ä¸ª float åĢ¼ ï¼Į åıĸ ä¸Ģ ç»Ħ éķ¿åº¦ ä¸º 3 çļĦæķ°æį® ĊĠĠĠĠĠĠĠ ĠGLES 2 0 . glVertex Attrib Pointer ( pos , Ġ 3 , ĠGLES 2 0 . GL _ FLOAT , Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 2 , Ġvertex Buffer ) ĊĊĠĠĠ Ġ} Ċ }