// NOTE: this is a simplified version int WINAPI QERApp_HasShader( const char *pName ) { CShaderInfo *pInfo = hasShader( pName ); if (pInfo) return 1; return 0; }
void OsgProgram::clearShader(int shaderType) { if (hasShader(shaderType)) { m_program->removeShader(m_osgShaders[shaderType]); m_osgShaders[shaderType] = nullptr; } }
bool OsgProgram::getShaderSource(int shaderType, std::string* source) const { if (hasShader(shaderType)) { *source = m_osgShaders[shaderType]->getShaderSource(); return true; } else { *source = ""; return false; } }
osg::ref_ptr<osg::Shader> OsgProgram::getOrCreateOsgShader(int shaderType) { osg::ref_ptr<osg::Shader> result; if (!hasShader(shaderType)) { result = new osg::Shader(OsgShaderTypes[shaderType]); m_program->addShader(result); m_osgShaders[shaderType] = result; } else { result = m_osgShaders[shaderType]; } return result; }
bool OsgProgram::hasGeometryShader() const { return hasShader(SHADER_TYPE_GEOMETRY); }
bool OsgProgram:: hasVertexShader() const { return hasShader(SHADER_TYPE_VERTEX); }
bool OsgProgram::hasFragmentShader() const { return hasShader(SHADER_TYPE_FRAGMENT); }