Shader::IProgramObject* CShaderHandler::CreateProgramObject( const std::string& poClass, const std::string& poName, const std::string& vsStr, const std::string& vsDefs, const std::string& fsStr, const std::string& fsDefs, bool arbProgram ) { Shader::IProgramObject* po = CreateProgramObject(poClass, poName, arbProgram); if (po->IsValid()) { return po; } Shader::IShaderObject* vso = CreateShaderObject(vsStr, vsDefs, (arbProgram? GL_VERTEX_PROGRAM_ARB: GL_VERTEX_SHADER)); Shader::IShaderObject* fso = CreateShaderObject(fsStr, fsDefs, (arbProgram? GL_FRAGMENT_PROGRAM_ARB: GL_FRAGMENT_SHADER)); po->AttachShaderObject(vso); po->AttachShaderObject(fso); po->Link(); if (!po->IsValid()) { logOutput.Print("[CShaderHandler::CreateProgramObject]\n"); logOutput.Print("\tprogram-object name: %s, link-log:\n%s\n", poName.c_str(), po->GetLog().c_str()); } return po; }
Shader::IProgramObject* CShaderHandler::CreateProgramObject( const std::string& poClass, const std::string& poName, const std::string& vsStr, const std::string& vsDefs, const std::string& fsStr, const std::string& fsDefs, bool arbProgram ) { Shader::IProgramObject* po = CreateProgramObject(poClass, poName, arbProgram); if (po->IsValid()) { return po; } Shader::IShaderObject* vso = CreateShaderObject(vsStr, vsDefs, (arbProgram? GL_VERTEX_PROGRAM_ARB: GL_VERTEX_SHADER)); Shader::IShaderObject* fso = CreateShaderObject(fsStr, fsDefs, (arbProgram? GL_FRAGMENT_PROGRAM_ARB: GL_FRAGMENT_SHADER)); po->AttachShaderObject(vso); po->AttachShaderObject(fso); po->Link(); po->Validate(); if (!po->IsValid()) { const char* fmt = "[%s]\n\tprogram-object name: %s, link-log:\n%s"; const char* log = po->GetLog().c_str(); LOG_L(L_WARNING, fmt, __FUNCTION__, poName.c_str(), log); } return po; }
void MythRenderOpenGL2::CreateDefaultShaders(void) { m_shaders[kShaderSimple] = CreateShaderObject(kSimpleVertexShader, kSimpleFragmentShader); m_shaders[kShaderDefault] = CreateShaderObject(kDefaultVertexShader, kDefaultFragmentShader); }
void MythRenderOpenGL2::CreateDefaultShaders(void) { m_shaders[kShaderSimple] = CreateShaderObject(kSimpleVertexShader, kSimpleFragmentShader); m_shaders[kShaderDefault] = CreateShaderObject(kDefaultVertexShader, kDefaultFragmentShader); m_shaders[kShaderCircle] = CreateShaderObject(kDrawVertexShader, kCircleFragmentShader); m_shaders[kShaderCircleEdge] = CreateShaderObject(kDrawVertexShader, kCircleEdgeFragmentShader); m_shaders[kShaderVertLine] = CreateShaderObject(kDrawVertexShader, kVertLineFragmentShader); m_shaders[kShaderHorizLine] = CreateShaderObject(kDrawVertexShader, kHorizLineFragmentShader); }
GLuint CGLES3Context::ApiCreateShader(GLenum type, GLuint shader) { CreateShaderObject(type, shader); CTX_ANALYZER_FUNC2(CreateShader, GLOutput, GL_OUT_BUF_SIZE, type, shader); return shader; }