# class glw::Shader

## Overview

Maintains the source code strings that defines a shader. More…

    #include <ShaderProgram.h>

    class Shader {
    public:
        // typedefs

        typedef std::map<std::string, std::string> ReplaceMap;

        // construction

        Shader(const ShaderType shader_type);
        Shader(const gl::GLenum shader_type);
        ~Shader();

        // methods

        static PShader Create(const ShaderType shader_type);
        static PShader CreateFromFile(const ShaderType shader_type, const std::string& file_name, const ReplaceMap& replace_map = ReplaceMap());
        static PShader CreateFromStr(const ShaderType shader_type, const std::string& shader_code, const ReplaceMap& replace_map = ReplaceMap());
        bool LoadFromStr(const std::string& shader_code, const ReplaceMap& replace_map = ReplaceMap());
        bool LoadFromFile(const std::string& file_name, const ReplaceMap& replace_map = ReplaceMap());
        bool Compile();
        bool IsCompiled() const;
        gl::GLuint GetID() const;
        ShaderType GetType() const;
        std::string GetCompilationLog() const;
    };

## Detailed Documentation

Maintains the source code strings that defines a shader.

### Construction

    Shader(const ShaderType shader_type)

Create new shader object of specified type.

    Shader(const gl::GLenum shader_type)

Create new shader object of specified type.

    ~Shader()

Destroy shader object and release OpenGL resources.

### Methods

    static PShader Create(const ShaderType shader_type)

Crate a shader object and return reference.

    static PShader CreateFromFile(const ShaderType shader_type, const std::string& file_name, const ReplaceMap& replace_map = ReplaceMap())

Create and compile a shader object and show compilation errors.

    static PShader CreateFromStr(const ShaderType shader_type, const std::string& shader_code, const ReplaceMap& replace_map = ReplaceMap())

Create and compile a shader object and show compilation errors.

    bool LoadFromStr(const std::string& shader_code, const ReplaceMap& replace_map = ReplaceMap())

Load shader source from string.

    bool LoadFromFile(const std::string& file_name, const ReplaceMap& replace_map = ReplaceMap())

Load shader source from text file.

    bool Compile()

Compiles shader and returns whether was compilation successful.

    bool IsCompiled() const

Checks, if last compilation was successful.

    gl::GLuint GetID() const

Returns OpenGL reference id.

    ShaderType GetType() const

Get type of this.

    std::string GetCompilationLog() const

Get log of last compilation with errors and warnings. If no errors, function returns empty string.