// load shaders. bool COGModelShader::Load (OGShaderID _Id, const std::string& _VertShader, const std::string& _FragmentShader) { if(ShaderLoadFromFile(_FragmentShader.c_str(), GL_FRAGMENT_SHADER, &m_uiFragShader) == 0) return false; if(ShaderLoadFromFile(_VertShader.c_str(), GL_VERTEX_SHADER, &m_uiVertShader) == 0) return false; const char* pszAttribs[] = { "inVertex", "inNormal", "inTexCoord" }; if (CreateProgram(&m_uiId, m_uiVertShader, m_uiFragShader, pszAttribs, 3) == 0) return false; m_uiMVPMatrixLoc = glGetUniformLocation(m_uiId, "MVPMatrix"); m_uiMVMatrixLoc = glGetUniformLocation(m_uiId, "MVMatrix"); m_uiLightDirLoc = glGetUniformLocation(m_uiId, "LightDirection"); m_uiTextureLoc = glGetUniformLocation(m_uiId, "sTexture"); m_uiFogEndLoc = glGetUniformLocation(m_uiId, "FogEnd"); m_uiFogRcpDiffLoc = glGetUniformLocation(m_uiId, "FogRcpEndStartDiff"); m_uiFogColorLoc = glGetUniformLocation(m_uiId, "FogColor"); m_uiFogEnabled = glGetUniformLocation(m_uiId, "FogEnabled"); m_uiMaterialAmbient = glGetUniformLocation(m_uiId, "MaterialAmbient"); m_uiMaterialDiffuse = glGetUniformLocation(m_uiId, "MaterialDiffuse"); m_Id = _Id; return true; }
// load shaders. bool COGShadowTransparentModelShader::Load (OGShaderID _Id, const std::string& _VertShader, const std::string& _FragmentShader) { if(ShaderLoadFromFile(_FragmentShader.c_str(), GL_FRAGMENT_SHADER, &m_uiFragShader) == 0) return false; if(ShaderLoadFromFile(_VertShader.c_str(), GL_VERTEX_SHADER, &m_uiVertShader) == 0) return false; const char* pszAttribs[] = { "inVertex", "inNormal", "inTexCoord" }; if (CreateProgram(&m_uiId, m_uiVertShader, m_uiFragShader, pszAttribs, 3) == 0) return false; m_uiMVPMatrixLoc = glGetUniformLocation(m_uiId, "MVPMatrix"); m_uiTextureLoc = glGetUniformLocation(m_uiId, "sTexture"); m_uiAlphaReference = glGetUniformLocation(m_uiId, "AlphaReference"); m_Id = _Id; m_fAlphaRef = 0.5f; return true; }
ShaderData::ShaderData( const char *vertShaderFilename, const char *fragShaderFilename ) { char buffer[2048]; GetResourcePathASCII(buffer, 2048); CPVRTResourceFile::SetReadPath(buffer); /* Gets the Data Path */ if(ShaderLoadFromFile("blank",fragShaderFilename, GL_FRAGMENT_SHADER, 0, &uiFragShader) == 0) printf("Loading the fragment shader fails:%s", fragShaderFilename); if(ShaderLoadFromFile("blank", vertShaderFilename, GL_VERTEX_SHADER, 0, &uiVertShader) == 0) printf("Loading the vertex shader fails:%s", vertShaderFilename); CreateProgram(&uiProgramObject, uiVertShader, uiFragShader, pszAttribs, sizeof(pszAttribs)/sizeof(pszAttribs[0]) ); // First gets the location of that variable in the shader using its name PMVMatrixHandle = glGetUniformLocation(uiProgramObject, "u_ModelViewProjectionMatrix"); MVMatrixHandle = glGetUniformLocation(uiProgramObject, "u_ModelViewMatrix"); TIMMatrixHandle = glGetUniformLocation(uiProgramObject, "u_TrasposeInverseModelMatrix"); ModelMatrixHandle = glGetUniformLocation(uiProgramObject, "u_ModelMatrix"); ViewMatrixHandle = glGetUniformLocation(uiProgramObject, "u_ViewMatrix"); EyePositionHandle = glGetUniformLocation(uiProgramObject, "myEye"); LightDirectionHandle = glGetUniformLocation(uiProgramObject, "light_direction"); LightPositionHandle = glGetUniformLocation(uiProgramObject, "light_position"); AmbientICHandle = glGetUniformLocation(uiProgramObject, "ambient_ic"); DiffuseICHandle = glGetUniformLocation(uiProgramObject, "diffuse_ic"); SpecularICHandle = glGetUniformLocation(uiProgramObject, "specular_ic"); MaterialShininessHandle = glGetUniformLocation(uiProgramObject, "material_shininess"); ColorHandle = glGetUniformLocation(uiProgramObject, "u_Color"); TextureHandle = glGetUniformLocation(uiProgramObject, "s_texture"); NormalMapHandle = glGetUniformLocation(uiProgramObject, "s_normalmap"); NoiseOffsetHandle= glGetUniformLocation(uiProgramObject, "u_offset"); }