/* QGLView 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 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