package Ġcom . k ome y ama . shader _ study _ android . ui . study 4 Ċ Ċ import Ġandroid . opengl . GLES 2 0 Ċ import Ġcom . k ome y ama . shader _ study _ android . ui . base . Shader Base Ċ import Ġcom . k ome y ama . shader _ study _ android . ui . ext . allocate Direct Ċ Ċ class ĠLine ( ĊĠĠĠ Ġoverride Ġvar Ġdraw Order : ĠShort Array Ġ= Ġshort ArrayOf ( 0 , Ġ 1 , Ġ 2 , Ġ 0 , Ġ 2 , Ġ 3 ), ĊĠĠĠ Ġoverride Ġvar Ġvertex Coordinates : ĠFloat Array Ġ= Ġfloat ArrayOf ( ĊĠĠĠĠĠĠĠ Ġ- 1 . 0 f , Ġ 1 . 0 f , Ġ 0 . 0 f , ĊĠĠĠĠĠĠĠ Ġ- 1 . 0 f , Ġ- 1 . 0 f , Ġ 0 . 0 f , ĊĠĠĠĠĠĠĠĠ 1 . 0 f , Ġ- 1 . 0 f , Ġ 0 . 0 f , ĊĠĠĠĠĠĠĠĠ 1 . 0 f , Ġ 1 . 0 f , Ġ 0 . 0 f ĊĠĠĠ Ġ), ĊĠĠĠ Ġoverride Ġvar Ġinit Color : ĠFloat Array Ġ= Ġfloat ArrayOf ( 0 . 0 f , Ġ 0 . 0 f , Ġ 0 . 0 f , Ġ 1 . 0 f ) Ċ ) Ġ: ĠShader Base () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġvertex Shader Code (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" uniform Ġmat 4 Ġu M VP Matrix ;" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" attribute Ġvec 4 Ġv Position ;" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" void Ġmain () Ġ{" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġgl _ Position Ġ= Ġu M VP Matrix Ġ* Ġv Position ;" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" }" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfragment Shader Code (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" precision Ġmedi ump Ġfloat ;" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" uniform Ġvec 4 Ġv Color ;" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" void Ġmain ( void ){ " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġgl _ Frag Color Ġ= Ġv Color ;" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" }" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhandle Fragment Parameter () Ġ{} ĊĊĠĠĠ Ġoverride Ġfun Ġdraw ( mvp Matrix : ĠFloat Array ) Ġ{ ĊĠĠĠĠĠĠĠ ĠGLES 2 0 . gl Use Program ( program ) ĊĊĠĠĠĠĠĠĠ Ġval Ġvertex Buffer Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertex Coordinates . allocate Direct () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdraw List Buffer Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Order . allocate Direct () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠGLES 2 0 . glGet UniformLocation ( program , Ġ" u M VP Matrix "). also Ġ{ Ġm vp Matrix Handle Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . gl Uniform Matrix 4 fv ( mvp Matrix Handle , Ġ 1 , Ġfalse , Ġm vp Matrix , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠGLES 2 0 . glGet UniformLocation ( program , Ġ" v Color "). also Ġ{ Ġcolor Handle Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . gl Uniform 4 fv ( color Handle , Ġ 1 , Ġinit Color , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠGLES 2 0 . glGet Attrib Location ( program , Ġ" v Position "). also Ġ{ Ġposition Handle Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . gl Enable VertexAttrib Array ( position Handle ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . glVertex Attrib Pointer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Handle , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCO ORD IN ATES _ PER _ VERTEX , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . GL _ FLOAT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠV ERT EX _ STRIDE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvertex Buffer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġline ĊĠĠĠĠĠĠĠ ĠGLES 2 0 . gl Draw Elements ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . GL _ LINE _ STRIP , Ġdraw Order . size , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . GL _ UNSIGNED _ SHORT , Ġdraw List Buffer ) ĊĠĠĠĠĠĠĠ ĠGLES 2 0 . gl LineWidth ( 1 0 . 5 f ) ĊĠĠĠ Ġ} Ċ Ċ }