void GLLinesShader::init()
{
    addShaderFromSourceFile(QOpenGLShader::Vertex, ":/shaders/simple.vs");
    addShaderFromSourceFile(QOpenGLShader::Fragment, ":/shaders/simple.fs");
    link();
    bind();

}
/**
 * Set a Vertex-/FragmentShader pair from file
 * @param filenameVertex path to the vertexshader
 * @param filenameFragment path to the fragmentshader
 */
bool SciIllLib::CGLShaderProgram::addShadersFromSourceFile(std::string filenameVertex, std::string filenameFragment)
{
	return
    addShaderFromSourceFile(GL_VERTEX_SHADER, filenameVertex.c_str())
    &&
    addShaderFromSourceFile(GL_FRAGMENT_SHADER, filenameFragment.c_str());
    
}
/**
 * Set a Vertex-/FragmentShader pair from file 
 * @param filenameVertex path to the vertexshader
 * @param filenameFragment path to the fragmentshader
 */
bool SciIllLib::CGLShaderProgram::addShadersFromSourceFile(const char* filenameVertex, const char* filenameFragment)
{
	return 
		addShaderFromSourceFile(GL_VERTEX_SHADER, filenameVertex)
		&&
		addShaderFromSourceFile(GL_FRAGMENT_SHADER, filenameFragment);

}
void Painter::initializeShaderPrograms()
{
    auto gemProgram = new QOpenGLShaderProgram(this);
    gemProgram->addShaderFromSourceFile(QOpenGLShader::Vertex, ":/shader/gem.vert");
    gemProgram->addShaderFromSourceFile(QOpenGLShader::Fragment, ":/shader/gem.frag");
    if (!gemProgram->link()) {
        qDebug() << "Gem: Link failed";
    }

    gemProgram->bindAttributeLocation("a_vertex", 0);
    gemProgram->bindAttributeLocation("a_normal", 1);

    auto lightRayProgram = new QOpenGLShaderProgram(this);
    lightRayProgram->addShaderFromSourceFile(QOpenGLShader::Vertex, ":/shader/lightray.vert");
    lightRayProgram->addShaderFromSourceFile(QOpenGLShader::Fragment, ":/shader/lightray.frag");

    if (!lightRayProgram->link()) {
        qDebug() << "LightRay: Link failed";
    }

    lightRayProgram->bindAttributeLocation("a_vertex", 0);
    lightRayProgram->bindAttributeLocation("a_color", 1);

    m_shaderPrograms->insert(ShaderPrograms::GemProgram, gemProgram);
    m_shaderPrograms->insert(ShaderPrograms::LighRayProgram, lightRayProgram);

    auto sceneProgram = new QOpenGLShaderProgram(this);
    sceneProgram->addShaderFromSourceFile(QOpenGLShader::Vertex, ":/shader/scene.vert");
    sceneProgram->addShaderFromSourceFile(QOpenGLShader::Fragment, ":/shader/scene.frag");

    if (!sceneProgram->link()) {
        qDebug() << "Scene: Link failed";
    }

    sceneProgram->bindAttributeLocation("a_vertex", 0);

    m_shaderPrograms->insert(ShaderPrograms::SceneProgram, sceneProgram);
}
Beispiel #5
0
 void ErrorShader::construct()
 {
     addShaderFileWithCommonHeaders(QOpenGLShader::Vertex, ":/model/shaders/errorshader.vert");
     addShaderFromSourceFile(QOpenGLShader::Fragment, ":/model/shaders/errorshader.frag");
     link();
 }
/**
 * Add a Vertex- / Fragment or a GeometryShader from file
 * @param type Type of shader - GL_VERTEX_SHADER, GL_FRAGMENT_SHADER or GL_GEOMETRY_SHADER
 * @param filename filename of the shader to be loaded
 */
bool SciIllLib::CGLShaderProgram::addShaderFromSourceFile(GLenum type, std::string filename)
{
	return addShaderFromSourceFile(type, filename.c_str());
}