#pragma once

#include "Program.hpp"
#include "../api/Models.hpp"

namespace pass {
    /// Skybox pass
    class SkyProgram: public Program {
    public:
        SkyProgram();
        ~SkyProgram();

        void start(render::gl::Renderer *);

        /// Direct draw using internal buffer
        void draw(render::gl::Renderer *);

    protected:
        std::string getName() const override;
        void setView(const GLfloat *matrix);
        void setProjection(const GLfloat *matrix);

        void bindTexture(const GLuint textureID);

    private:
        GLuint ViewMatrixID;
        GLuint ProjectionMatrixID;
        GLuint TextureID;

        render::gl::Shape CubeBuffer;
    };
}
