package Ġcom . hu jun . my application . entity Ċ Ċ import Ġandroid . opengl . GLES 3 2 Ċ import Ġandroid . util . Log Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġj un hu Ġon Ġ 2 0 1 9 - 1 1 - 3 0 Ċ Ġ*/ Ċ class ĠCircle ( m Program : ĠInt ) Ġ: ĠBase Entity ( m Program ) Ġ{ Ċ // ĠĠĠ Ġprivate Ġval ĠSTEP _ ANGLE Ġby Ġlazy Ġ{ Ġ 1 0 Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġthis :: class . java . name . replace ("${ '$ '} Companion ", Ġ""). split (". "). last () ĊĠĠĠĠĠĠĠ Ġ// åľĨ å½¢ æī ĩ å½¢ åĪĩ åĪĨ ä¸º å¤ļå°ĳ ä¸Ģä¸ª ĊĠĠĠĠĠĠĠ Ġval ĠSTEP _ ANGLE Ġ= Ġ 1 0 ĊĠĠĠĠĠĠĠ Ġval ĠRAD IUS Ġ= Ġ 0 . 5 f ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġset Color () ĊĠĠĠĠĠĠĠ Ġafter Init () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsize Changed ( width : ĠInt , Ġheight : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . size Changed ( width , Ġheight ) ĊĠĠĠĠĠĠĠ ĠGLES 3 2 . gl Use Program ( m Program ) ĊĠĠĠĠĠĠĠ Ġval Ġaspect Ġ= Ġm Width . toDouble () Ġ/ Ġm Height . toDouble () ĊĠĠĠĠĠĠĠ ĠGLES 3 2 . glVertex Attrib 1 f ( 1 , Ġaspect . toFloat ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Color () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcolor Ġ= ĠGLES 3 2 . glGet UniformLocation ( m Program , Ġ" a Color ") ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" setColor : Ġ$ color ") ĊĠĠĠĠĠĠĠ Ġcheck GLE rror (" setColor 1 ") ĊĠĠĠĠĠĠĠ ĠGLES 3 2 . gl Uniform 4 f ( color , Ġ 0 . 5 f , Ġ 0 . 1 f , Ġ 0 . 0 f , Ġ 1 . 0 f ) ĊĠĠĠĠĠĠĠ Ġcheck GLE rror (" setColor 2 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdraw () Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck GLE rror (" before Ġdraw ") ĊĠĠĠĠĠĠĠ Ġif Ġ( m Width Ġ== Ġ 0 Ġ|| Ġm Height Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" draw : Ġerror Ġwidth Ġcannot Ġbe Ġ 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠGLES 3 2 . gl Use Program ( m Program ) ĊĠĠĠĠĠĠĠ ĠGLES 3 2 . glBind VertexArray ( VA O ) ĊĊĠĠĠĠĠĠĠ ĠGLES 3 2 . gl Draw Arrays ( GLES 3 2 . GL _ TRI ANGLE _ F AN , Ġ 0 , Ġm Vertex . size Ġ/ Ġ 3 ) ĊĊĠĠĠĠĠĠĠ ĠGLES 3 2 . glBind VertexArray ( 0 ) ĊĠĠĠĠĠĠĠ ĠGLES 3 2 . gl Use Program ( 0 ) ĊĠĠĠĠĠĠĠ Ġcheck GLE rror (" after Ġdraw ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Vertex () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// é¡¶ çĤ¹ åĮħæĭ¬ 1 ä¸ª åľĨ å¿ĥ ï¼Į æī ĩ å½¢ ä¸Ĭ åĪĩ åĪĨ çĤ¹ ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġ 1 Ġ+ Ġ 3 6 0 Ġ/ ĠSTEP _ ANGLE Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġm Vertex Ġ= ĠFloat Array ( 3 Ġ* Ġsize ) ĊĠĠĠĠĠĠĠ Ġ// åľĨ å¿ĥ ĊĠĠĠĠĠĠĠ Ġm Vertex [ 0 ] Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġm Vertex [ 1 ] Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġm Vertex [ 2 ] Ġ= Ġ 0 f ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( angle Ġin Ġ 0 .. 3 6 0 Ġstep ĠSTEP _ ANGLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnum Ġ= Ġ( angle Ġ/ ĠSTEP _ ANGLE Ġ+ Ġ 1 ) Ġ* Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġrad ian Ġ= ĠMath . to Radians ( angle . toDouble ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Vertex [ num ] Ġ= ĠMath . cos ( rad ian ). toFloat () Ġ* ĠRAD IUS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Vertex [ num Ġ+ Ġ 1 ] Ġ= ĠMath . sin ( rad ian ). toFloat () Ġ* ĠRAD IUS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Vertex [ num Ġ+ Ġ 2 ] Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhandle V BO () Ġ{ ĊĠĠĠĠĠĠĠ ĠGLES 3 2 . glBind Buffer ( GLES 3 2 . GL _ ARRAY _ BUFFER , ĠV BO ) ĊĠĠĠĠĠĠĠ ĠGLES 3 2 . glVertex Attrib Pointer ( 0 , Ġ 3 , ĠGLES 3 2 . GL _ FLOAT , Ġfalse , Ġ 3 Ġ* ĠSIZE _ OF _ FLOAT , Ġ 0 ) ĊĠĠĠĠĠĠĠ ĠGLES 3 2 . gl Enable VertexAttrib Array ( 0 ) ĊĠĠĠ Ġ} Ċ }