public static Program GetProgram() { if (_program == null) { var vertexShader = Effect.AddShaderInitCode() + @" in vec4 aPosition; in vec4 aColor; in vec2 aTexCoords; uniform mat4 uMvpMatrix; uniform vec4 uAlpha; out lowp vec4 vColor; out lowp vec2 vTexCoords; void main() { gl_Position = uMvpMatrix * aPosition; vColor = aColor * uAlpha; vTexCoords = aTexCoords; }"; var fragmentShader = Effect.AddShaderInitCode() + @" in lowp vec4 vColor; in lowp vec2 vTexCoords; uniform lowp sampler2D uTexture; out lowp vec4 fragColor; void main() { fragColor = texture(uTexture, vTexCoords) * vColor; }"; _program = new Program(vertexShader, fragmentShader); } return(_program); }