/** This file is a part of our_dick Copyright (C) 2020 rexy712 This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ #ifndef OUR_DICK_GRAPHICS_OGL_RBO_HPP #define OUR_DICK_GRAPHICS_OGL_RBO_HPP #include "gl_include.hpp" namespace gfx::ogl{ //Class representing a renderbuffer object class rbo { private: GLuint m_buffer; GLenum m_format; GLsizei m_width; GLsizei m_height; GLsizei m_samples; public: rbo(GLsizei width, GLsizei height, GLenum format, GLsizei samples = 0); rbo(const rbo& r) = delete; rbo(rbo&& r); ~rbo(void); rbo& operator=(const rbo& r) = delete; rbo& operator=(rbo&& r); //Raw access to opengl handle GLuint raw(void)const; //Set this as the active renderbuffer void bind(void)const; //Reset to default renderbuffer binding void unbind(void)const; void resize(GLsizei w, GLsizei h); void resize(GLsizei w, GLsizei h, GLenum format, GLsizei samples); void reformat(GLenum format); GLuint release(void); GLsizei get_width(void)const; GLsizei get_height(void)const; }; } #endif