xcal
基于 C++23 的现代图形渲染引擎
载入中...
搜索中...
未找到
buffer.cc
浏览该文件的文档.
2//
4
5xcal::render::opengl::GL::Buffer::Buffer(_gl GLenum target) : target_(target) {}
7 if (is_valid()) _gl glDeleteBuffers(1, &vbo_);
8 vbo_ = 0;
9 size_ = 0;
10 target_ = _gl GLenum{};
11}
13 _gl glBindBuffer(target_, vbo_);
14};
15
16void xcal::render::opengl::GL::Buffer::bind_as(_gl GLenum target) const {
17 _gl glBindBuffer(target, vbo_);
18}
20 _gl GLuint size,
21 _gl GLenum usage) {
22 if (target_ == 0) target_ = _gl GL_ARRAY_BUFFER;
23 if (vbo_ == 0) _gl glGenBuffers(1, &vbo_);
24 bind();
25 _gl glBufferData(target_, size, data, usage);
26 size_ = size;
27}
29 std::vector<char> &data) const {
30 data.resize(size_);
31 _gl glGetBufferSubData(target_, 0, size_, data.data());
32}
34 std::vector<char> &data, _gl GLenum target) const {
35 data.resize(size_);
36 _gl glGetBufferSubData(target, 0, size_, data.data());
37}
39 if (is_valid()) _gl glDeleteBuffers(1, &vbo_);
40}
42 _gl glBindBuffer(target_, 0);
43};
45 _gl glBindBuffer(target, 0);
46}
48 gl::GLuint offset,
49 gl::GLuint size) {
50 bind();
51 _gl glBufferSubData(target_, offset, size, data);
52}
void bind_as(gl::GLenum target) const
Definition buffer.cc:16
void buffer_data(const void *data, gl::GLuint size, gl::GLenum usage)
void buffer_sub_data(const void *data, gl::GLuint offset, gl::GLuint size)
Definition buffer.cc:47
void get_buffer_data(std::vector< char > &data) const
Definition buffer.cc:28
Buffer(const Buffer &)=delete
unsigned int GLuint
Definition typedef.hpp:21