package Ġpersonal . n fl . first opengl . programs Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . opengl . GLES 2 0 .* Ċ import Ġpersonal . n fl . first opengl . R Ċ Ċ class ĠTexture Shader Program Ġ: ĠShader Program Ġ{ ĊĠĠĠ Ġprivate Ġval Ġu Matrix Location Ġ: ĠInt ĊĠĠĠ Ġprivate Ġval Ġu Texture Unit Location : Int ĊĊĠĠĠ Ġval Ġa Position Location : Int ĊĠĠĠ Ġval Ġa Texture Coordinates Location : Int ĊĊĠĠĠ Ġconstructor ( context : ĠContext ): super ( context Ġ, ĠR . raw . texture _ vertex _ shader Ġ, ĠR . raw . texture _ fragment _ shader ){ ĊĠĠĠĠĠĠĠ Ġu Matrix Location Ġ= ĠglGet UniformLocation ( program Ġ, ĠU _ MATRIX ) ĊĠĠĠĠĠĠĠ Ġu Texture Unit Location Ġ= ĠglGet UniformLocation ( program , ĠU _ TEXTURE _ UNIT ) ĊĊĠĠĠĠĠĠĠ Ġa Position Location Ġ= ĠglGet Attrib Location ( program Ġ, ĠA _ POSITION ) ĊĠĠĠĠĠĠĠ Ġa Texture Coordinates Location Ġ= ĠglGet Attrib Location ( program Ġ, ĠA _ TEXTURE _ COORD IN ATES ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Uniform s ( matrix : Float Array Ġ, Ġtexture Id : Int ){ ĊĠĠĠĠĠĠĠ Ġ// ĠPass Ġthe Ġmatrix Ġinto Ġthe Ġshader Ġprogram . ĊĠĠĠĠĠĠĠ Ġgl Uniform Matrix 4 fv ( u Matrix Location Ġ, Ġ 1 Ġ, Ġfalse Ġ, Ġmatrix Ġ, Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe Ġactive Ġtexture Ġunit Ġto Ġtexture Ġunit Ġ 0 . ĊĠĠĠĠĠĠĠ Ġgl Active Texture ( GL _ TEXTURE 0 ) ĊĠĠĠĠĠĠĠ Ġ// ĠBind Ġthe Ġtexture Ġto Ġthis Ġunit . ĊĠĠĠĠĠĠĠ ĠglBind Texture ( GL _ TEXTURE _ 2 D Ġ, Ġtexture Id ) ĊĠĠĠĠĠĠĠ Ġ// ĠTell Ġthe Ġtexture Ġuniform Ġsampler Ġto Ġuse Ġthis Ġtexture Ġin Ġthe Ġshader Ġby Ġtelling Ġit Ġto Ġread Ġfrom Ġtexture Ġunit Ġ 0 . ĊĠĠĠĠĠĠĠ Ġgl Uniform 1 i ( u Texture Unit Location Ġ, Ġ 0 ) ĊĠĠĠ Ġ} Ċ }