7 #include <glbinding/gl/types.h> 9 #include <globjects/globjects_api.h> 41 , DirectStateAccessEXT
52 static void setWorkingTarget(gl::GLenum target);
64 static Buffer * fromId(gl::GLuint
id);
75 void bind(gl::GLenum target)
const;
80 static void unbind(gl::GLenum target);
86 static void unbind(gl::GLenum target, gl::GLuint index);
95 void setData(gl::GLsizeiptr size,
const gl::GLvoid * data, gl::GLenum usage);
100 void setData(
const std::vector<T> & data, gl::GLenum usage);
104 template <
typename T, std::
size_t Count>
105 void setData(
const std::array<T, Count> & data, gl::GLenum usage);
113 void setSubData(gl::GLintptr offset, gl::GLsizeiptr size,
const gl::GLvoid* data =
nullptr);
117 template <
typename T>
118 void setSubData(
const std::vector<T> & data, gl::GLintptr offset = 0);
122 template <
typename T, std::
size_t Count>
123 void setSubData(
const std::array<T, Count> & data, gl::GLintptr offset = 0);
131 void setStorage(gl::GLsizeiptr size,
const gl::GLvoid * data, gl::BufferStorageMask flags);
135 template <
typename T>
136 void setStorage(
const std::vector<T> & data, gl::BufferStorageMask flags);
140 template <
typename T, std::
size_t Count>
141 void setStorage(
const std::array<T, Count> & data, gl::BufferStorageMask flags);
149 gl::GLint getParameter(gl::GLenum pname)
const;
157 gl::GLint64 getParameter64(gl::GLenum pname)
const;
162 const void * map()
const;
168 void * map(gl::GLenum access);
178 void * mapRange(gl::GLintptr offset, gl::GLsizeiptr length, gl::BufferAccessMask access);
190 void flushMappedRange(gl::GLintptr offset, gl::GLsizeiptr length);
195 void bindBase(gl::GLenum target, gl::GLuint index)
const;
200 void bindRange(gl::GLenum target, gl::GLuint index, gl::GLintptr offset, gl::GLsizeiptr size)
const;
208 void copySubData(
Buffer * buffer, gl::GLintptr readOffset, gl::GLintptr writeOffset, gl::GLsizeiptr size)
const;
212 void copySubData(
Buffer * buffer, gl::GLsizeiptr size)
const;
220 void copyData(
Buffer * buffer, gl::GLsizeiptr size, gl::GLenum usage)
const;
227 void clearData(gl::GLenum internalformat, gl::GLenum format, gl::GLenum type,
const void * data =
nullptr);
234 void clearSubData(gl::GLenum internalformat, gl::GLintptr offset, gl::GLsizeiptr size, gl::GLenum format, gl::GLenum type,
const void * data =
nullptr);
236 const void * getPointer()
const;
238 const void * getPointer(gl::GLenum pname)
const;
239 void * getPointer(gl::GLenum pname);
241 void getSubData(gl::GLintptr offset, gl::GLsizeiptr size,
void * data)
const;
243 template <
typename T>
244 const std::vector<T> getSubData(gl::GLsizeiptr size, gl::GLintptr offset = 0)
const;
248 template <
typename T, std::
size_t Count>
249 const std::array<T, Count> getSubData(gl::GLintptr offset = 0)
const;
254 void invalidateData()
const;
261 void invalidateSubData(gl::GLintptr offset, gl::GLsizeiptr length)
const;
263 virtual gl::GLenum objectType()
const override;
269 Buffer(IDResource * resource);
281 #include <globjects/Buffer.inl> BindlessImplementation
Definition: Buffer.h:38
Contains all the classes that wrap OpenGL functionality.
Superclass of all wrapped OpenGL objects.
Definition: Object.h:26
Wrapper for OpenGL buffer objects.
Definition: Buffer.h:35
Implements a Visitor Pattern to iterate over all tracked globjects objects.
Definition: ObjectVisitor.h:29