MCPcopy Create free account
hub / github.com/AcademySoftwareFoundation/OpenColorIO / buildProgram

Method buildProgram

src/libutils/oglapphelpers/glsl.cpp:482–515  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

480}
481
482unsigned OpenGLBuilder::buildProgram(const std::string & clientShaderProgram, bool standaloneShader)
483{
484 const std::string shaderCacheID = m_shaderDesc->getCacheID();
485 if(shaderCacheID!=m_shaderCacheID)
486 {
487 if(m_fragShader)
488 {
489 glDetachShader(m_program, m_fragShader);
490 glDeleteShader(m_fragShader);
491 }
492
493 std::ostringstream oss;
494 oss << getGLSLVersionString() << std::endl
495 << (!standaloneShader ? m_shaderDesc->getShaderText() : "") << std::endl
496 << clientShaderProgram << std::endl;
497
498 if(m_verbose)
499 {
500 std::cout << "\nGPU Shader Program:\n\n"
501 << oss.str()
502 << "\n\n"
503 << std::flush;
504 }
505
506 m_fragShader = CompileShaderText(GL_FRAGMENT_SHADER, oss.str().c_str());
507
508 LinkShaders(m_program, m_fragShader);
509 m_shaderCacheID = shaderCacheID;
510
511 linkAllUniforms();
512 }
513
514 return m_program;
515}
516
517void OpenGLBuilder::useProgram()
518{

Callers 1

setShaderMethod · 0.80

Calls 4

CompileShaderTextFunction · 0.85
LinkShadersFunction · 0.85
getShaderTextMethod · 0.80
getCacheIDMethod · 0.45

Tested by

no test coverage detected