/* QGL Buffer Ivan Pelipenko peri4ko@yandex.ru This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ #ifndef GLBUFFER_H #define GLBUFFER_H #include "gltypes.h" class Buffer { friend class ObjectBase; public: Buffer(GLenum target, GLenum usage = GL_DYNAMIC_DRAW); ~Buffer(); void init(QOpenGLExtraFunctions * f); void destroy(QOpenGLExtraFunctions * f); void reinit(); void bind(QOpenGLExtraFunctions * f); void release(QOpenGLExtraFunctions * f); void * map(QOpenGLExtraFunctions * f, GLbitfield mode, int size = -1); void unmap(QOpenGLExtraFunctions * f); // returns true if size changed bool resize(QOpenGLExtraFunctions * f, int new_size); void load(QOpenGLExtraFunctions * f, const void * data, int size, int offset = 0); GLuint ID() const { return buffer_; } GLenum usage() const { return usage_; } GLenum target() const { return target_; } void setTarget(GLenum t) { target_ = t; } bool isInit() const { return buffer_ != 0; } private: GLenum target_, usage_; GLuint buffer_; int prev_size; }; #endif // GLBUFFER_H