8 #include "VectorMath.h"
18 namespace TexturedUniformColoredShaderCode
20 const std::string PositionName =
"Position";
21 const std::string UVName =
"UV";
22 const std::string ModelViewProjectionMatrixName =
"ModelViewProjectionMatrix";
24 const std::string _vertexDecls =
25 "attribute highp vec3 "+PositionName+
";\n"
26 "attribute mediump vec2 "+UVName+
";\n"
27 "varying mediump vec2 DestinationUV;\n"
28 "uniform highp mat4 "+ModelViewProjectionMatrixName+
";\n";
30 const std::string DiffuseName =
"Diffuse";
31 const std::string ColorName =
"ColorName";
33 const std::string _fragmentDecls =
34 "varying mediump vec2 DestinationUV;\n"
35 "uniform sampler2D "+DiffuseName+
";\n"
36 "uniform lowp vec4 "+ColorName+
";\n";
38 const std::string _vertexCode =
"void main(void) { \n"
39 "DestinationUV = UV;\n"
40 "gl_Position = ModelViewProjectionMatrix * vec4(Position.xyz, 1.0);\n"
43 const std::string _fragmentCode =
"void main(void) { \n"
44 "gl_FragColor = "+ColorName+
" * texture2D("+DiffuseName+
", DestinationUV.xy);\n"
55 TexturedUniformColoredShaderCode::_vertexDecls + TexturedUniformColoredShaderCode::_vertexCode,
56 TexturedUniformColoredShaderCode::_fragmentDecls + TexturedUniformColoredShaderCode::_fragmentCode
60 const GLuint GetDiffuseSamplerId()
const {
return 0; }
62 void SetMVP(
const m44& mvp)
const
64 bool transpose =
false;
65 SetUniformM44(mvp, m_mvpUniformLocation, transpose);
68 void SetColor(
const v4& color)
const
70 SetUniformV4(color, m_colorUniformLocation);
76 SetUniformTextureSampler(glState, GetDiffuseSamplerId(), m_diffuseTextureSamplerUniformLocation);
82 CompileProgram(vertexShaderCode, fragmentShaderCode);
84 m_mvpUniformLocation = GetUniformLocation(TexturedUniformColoredShaderCode::ModelViewProjectionMatrixName);
85 m_colorUniformLocation = GetUniformLocation(TexturedUniformColoredShaderCode::ColorName);
86 m_diffuseTextureSamplerUniformLocation = GetUniformLocation(TexturedUniformColoredShaderCode::DiffuseName);
90 GLuint m_mvpUniformLocation ;
91 GLuint m_colorUniformLocation;
92 GLuint m_diffuseTextureSamplerUniformLocation;