コード例 #1
0
ファイル: geShader.cpp プロジェクト: ileben/GameEngine
  bool Shader::compile (ShaderType::Enum target, const CharString &source)
  {
    //Make sure old shaders are detached
    detachShaders();

    //Create a new shader
    GLShader *shader = new GLShader;
    shader->create( target );

    //Add to shader list
    switch (target) {
    case ShaderType::Vertex:
      vertShaders.pushBack( shader ); break;
    case ShaderType::Fragment:
      fragShaders.pushBack( shader ); break; }

    //Compile the source
    bool status = shader->compile( source );

    if (status)
      printf( "%s shader compiled.\n",
        target == ShaderType::Vertex ? "Vertex" : "Fragment" );
    else
      printf( "Failed compiling %s shader!",
        target == ShaderType::Vertex ? "vertex" : "fragment" );

    CharString infoLog = shader->getInfoLog ();
    if (infoLog.length() > 0)
      printf ("Info Log:\n%s\n", infoLog.buffer());

    return status;
  }
コード例 #2
0
ファイル: program.cpp プロジェクト: argontus/3S3K3D
void Program::link()
{
    // synchronize states of the referenced OpenGL program object and this
    // object
    detachShaders();
    attachShaders();

    glLinkProgram(id_);
}
コード例 #3
0
ファイル: geShader.cpp プロジェクト: ileben/GameEngine
 Shader::~Shader ()
 {
   detachShaders();
   deleteShaders();
   deleteProgram();
 }