Exemplo n.º 1
0
	void reset() { removeAllShaders(); m_frag = m_vertex = false; }
Exemplo n.º 2
0
void Z3DShaderProgram::loadFromSourceCode(const QStringList &vertSrcs, const QStringList &geomSrcs,
                                          const QStringList &fragSrcs, const QString &header)
{
  removeAllShaders();
  for (int i=0; i<vertSrcs.size(); ++i) {
    QString vertSrc = header + vertSrcs[i];
#ifdef _QT5_
    if (!addShaderFromSourceCode(QOpenGLShader::Vertex, vertSrc)) {
#else
    if (!addShaderFromSourceCode(QGLShader::Vertex, vertSrc)) {
#endif
      LDEBUG() << vertSrc;
      throw Exception("Can not compile vertex shader. Error log: " + log().toStdString());
    }
  }

  for (int i=0; i<geomSrcs.size(); ++i) {
    QString geomSrc = header + geomSrcs[i];
#ifdef _QT5_
    if (!addShaderFromSourceCode(QOpenGLShader::Geometry, geomSrc)) {
#else
    if (!addShaderFromSourceCode(QGLShader::Geometry, geomSrc)) {
#endif
      LDEBUG() << geomSrc;
      throw Exception("Can not compile geometry shader. Error log: " + log().toStdString());
    }
  }

  for (int i=0; i<fragSrcs.size(); ++i) {
    QString fragSrc = header + fragSrcs[i];
#ifdef _QT5_
    if (!addShaderFromSourceCode(QOpenGLShader::Fragment, fragSrc)) {
#else
    if (!addShaderFromSourceCode(QGLShader::Fragment, fragSrc)) {
#endif
      LDEBUG() << fragSrc;
      throw Exception("Can not compile fragment shader. Error log: " + log().toStdString());
    }
  }

  if (!link()) {
    throw Exception("Can not link shader. Error log: " + log().toStdString());
  }
}

void Z3DShaderProgram::loadFromSourceCode(const QStringList &vertSrcs, const QStringList &fragSrcs,
                                          const QString &header)
{
  loadFromSourceCode(vertSrcs, QStringList(), fragSrcs, header);
}

void Z3DShaderProgram::setHeaderAndRebuild(const QString &header)
{
  loadFromSourceCode(m_vertSrcs, m_geomSrcs, m_fragSrcs, header);
}

GLint Z3DShaderProgram::getUniformLocation(const QString &name)
{
  GLint l = uniformLocation(name);
  if (l == -1 && logUniformLocationError()) {
    LWARN() << "Failed to locate uniform:" << name;
  }
  return l;
}
Exemplo n.º 3
0
GlShaderProgram::~GlShaderProgram() {
  removeAllShaders();
  glDeleteProgram(programObjectId);
}
Exemplo n.º 4
0
SciIllLib::CGLShaderProgram::~CGLShaderProgram()
{
	removeAllShaders();
}