#pragma once #include #include #include #include "Shader.h" #include "SceneContext.h" class Multipass { public: Multipass(); ~Multipass(); void setDrawBuffers(); void bindToFrameBuffer(GLenum type, GLenum texture, std::string texName); void addTexture(const std::string &tex_name, GLuint filter, GLuint type, GLuint type_2, GLuint type_3, bool depth, SceneContext &scnctx, GLuint height = 0, GLuint width = 0); void enableFrameBufferTexture(const std::string tex_name); void drawResultToScreen(SceneContext &scnctx); GLuint getCurrentTexture(); Shader *shader; private: void _createQuad(); GLuint _fboId; GLuint _quad_vao; GLuint _quad_vbo; std::string _current_tex; std::map _pass_textures; GLenum _draw_buffers[5]; GLuint _draw_buffers_size; };