7 #include <glbinding/gl/types.h> 9 #include <globjects/globjects_api.h> 41 , DirectStateAccessEXT
45 static void hintBindlessImplementation(BindlessImplementation impl);
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 T & data, gl::GLenum usage);
104 template <
typename T>
105 void setData(
const std::vector<T> & data, gl::GLenum usage);
109 template <
typename T, std::
size_t Count>
110 void setData(
const std::array<T, Count> & data, gl::GLenum usage);
119 void setSubData(gl::GLintptr offset, gl::GLsizeiptr size,
const gl::GLvoid* data =
nullptr);
123 template <
typename T>
124 void setSubData(
const T & data, gl::GLintptr offset = 0);
128 template <
typename T>
129 void setSubData(
const std::vector<T> & data, gl::GLintptr offset = 0);
133 template <
typename T, std::
size_t Count>
134 void setSubData(
const std::array<T, Count> & data, gl::GLintptr offset = 0);
142 void setStorage(gl::GLsizeiptr size,
const gl::GLvoid * data, gl::BufferStorageMask flags);
146 template <
typename T>
147 void setStorage(
const T & data, gl::BufferStorageMask flags);
151 template <
typename T>
152 void setStorage(
const std::vector<T> & data, gl::BufferStorageMask flags);
156 template <
typename T, std::
size_t Count>
157 void setStorage(
const std::array<T, Count> & data, gl::BufferStorageMask flags);
165 gl::GLint getParameter(gl::GLenum pname)
const;
173 gl::GLint64 getParameter64(gl::GLenum pname)
const;
178 const void * map()
const;
184 void * map(gl::GLenum access);
194 void * mapRange(gl::GLintptr offset, gl::GLsizeiptr length, gl::BufferAccessMask access);
206 void flushMappedRange(gl::GLintptr offset, gl::GLsizeiptr length);
211 void bindBase(gl::GLenum target, gl::GLuint index)
const;
216 void bindRange(gl::GLenum target, gl::GLuint index, gl::GLintptr offset, gl::GLsizeiptr size)
const;
224 void copySubData(
Buffer * buffer, gl::GLintptr readOffset, gl::GLintptr writeOffset, gl::GLsizeiptr size)
const;
228 void copySubData(
Buffer * buffer, gl::GLsizeiptr size)
const;
236 void copyData(
Buffer * buffer, gl::GLsizeiptr size, gl::GLenum usage)
const;
243 void clearData(gl::GLenum internalformat, gl::GLenum format, gl::GLenum type,
const void * data =
nullptr);
250 void clearSubData(gl::GLenum internalformat, gl::GLintptr offset, gl::GLsizeiptr size, gl::GLenum format, gl::GLenum type,
const void * data =
nullptr);
252 const void * getPointer()
const;
254 const void * getPointer(gl::GLenum pname)
const;
255 void * getPointer(gl::GLenum pname);
264 void getSubData(gl::GLintptr offset, gl::GLsizeiptr size,
void * data)
const;
268 template <
typename T>
269 std::vector<T> getSubData(gl::GLsizeiptr count, gl::GLintptr offset = 0)
const;
273 template <
typename T, std::
size_t Count>
274 std::array<T, Count> getSubData(gl::GLintptr offset = 0)
const;
279 void invalidateData()
const;
286 void invalidateSubData(gl::GLintptr offset, gl::GLsizeiptr length)
const;
288 virtual gl::GLenum objectType()
const override;
294 Buffer(IDResource * resource);
306 #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