MCPcopy Create free account
hub / github.com/Kitware/VTK / GetShaderProgram

Method GetShaderProgram

Rendering/OpenGL2/vtkOpenGLShaderCache.cxx:401–433  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

399}
400
401vtkShaderProgram* vtkOpenGLShaderCache::GetShaderProgram(
402 std::map<vtkShader::Type, vtkShader*> shaders)
403{
404 // compute the MD5 and the check the map
405 std::string result;
406 this->Internal->ComputeMD5({ shaders[vtkShader::Vertex]->GetSource().c_str(),
407 shaders[vtkShader::Fragment]->GetSource().c_str(),
408 shaders[vtkShader::Geometry]->GetSource().c_str(),
409 shaders[vtkShader::TessControl]->GetSource().c_str(),
410 shaders[vtkShader::TessEvaluation]->GetSource().c_str() },
411 result);
412
413 // does it already exist?
414 typedef std::map<std::string, vtkShaderProgram*>::const_iterator SMapIter;
415 SMapIter found = this->Internal->ShaderPrograms.find(result);
416 if (found == this->Internal->ShaderPrograms.end())
417 {
418 // create one
419 vtkShaderProgram* sps = vtkShaderProgram::New();
420 sps->SetVertexShader(shaders[vtkShader::Vertex]);
421 sps->SetFragmentShader(shaders[vtkShader::Fragment]);
422 sps->SetGeometryShader(shaders[vtkShader::Geometry]);
423 sps->SetTessControlShader(shaders[vtkShader::TessControl]);
424 sps->SetTessEvaluationShader(shaders[vtkShader::TessEvaluation]);
425 sps->SetMD5Hash(result); // needed?
426 this->Internal->ShaderPrograms.insert(std::make_pair(result, sps));
427 return sps;
428 }
429 else
430 {
431 return found->second;
432 }
433}
434
435vtkShaderProgram* vtkOpenGLShaderCache::GetShaderProgram(const char* vertexCode,
436 const char* fragmentCode, const char* geometryCode, const char* tessControlCode,

Callers 2

ReadyShaderProgramMethod · 0.95
DrawShapesMethod · 0.45

Calls 8

NewFunction · 0.50
ComputeMD5Method · 0.45
c_strMethod · 0.45
GetSourceMethod · 0.45
findMethod · 0.45
endMethod · 0.45
insertMethod · 0.45
SetSourceMethod · 0.45

Tested by

no test coverage detected