Files
qglengine/core/glbuffer.h
2022-12-14 14:14:44 +03:00

59 lines
1.6 KiB
C++

/*
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 <http://www.gnu.org/licenses/>.
*/
#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