9#include <glbinding/gl/types.h>
11#include <globjects/globjects_api.h>
20class VertexAttributeBinding;
31 VertexAttribBindingARB,
43 static std::unique_ptr<VertexArray>
fromId(gl::GLuint
id);
54 void enable(gl::GLint attributeIndex);
57 std::vector<VertexAttributeBinding *>
bindings();
58 std::vector<const VertexAttributeBinding *>
bindings()
const;
62 void drawArrays(gl::GLenum mode, gl::GLint first, gl::GLsizei count)
const;
63 void drawArraysInstanced(gl::GLenum mode, gl::GLint first, gl::GLsizei count, gl::GLsizei instanceCount)
const;
67 void multiDrawArrays(gl::GLenum mode, gl::GLint * first,
const gl::GLsizei * count, gl::GLsizei drawCount)
const;
70 void drawElements(gl::GLenum mode, gl::GLsizei count, gl::GLenum type,
const void * indices =
nullptr)
const;
71 void drawElementsBaseVertex(gl::GLenum mode, gl::GLsizei count, gl::GLenum type,
const void * indices, gl::GLint baseVertex)
const;
72 void drawElementsInstanced(gl::GLenum mode, gl::GLsizei count, gl::GLenum type,
const void * indices, gl::GLsizei primitiveCount)
const;
73 void drawElementsInstancedBaseInstance(gl::GLenum mode, gl::GLsizei count, gl::GLenum type,
const void * indices, gl::GLsizei instanceCount, gl::GLuint baseInstance)
const;
74 void drawElementsInstancedBaseVertex(gl::GLenum mode, gl::GLsizei count, gl::GLenum type,
const void * indices, gl::GLsizei instanceCount, gl::GLint baseVertex)
const;
77 void multiDrawElements(gl::GLenum mode,
const gl::GLsizei * count, gl::GLenum type,
const void ** indices, gl::GLsizei drawCount)
const;
78 void multiDrawElementsBaseVertex(gl::GLenum mode,
const gl::GLsizei * count, gl::GLenum type,
const void ** indices, gl::GLsizei drawCount, gl::GLint * baseVertex)
const;
79 void multiDrawElementsIndirect(gl::GLenum mode, gl::GLenum type,
const void * indirect, gl::GLsizei drawCount, gl::GLsizei stride)
const;
81 void drawRangeElements(gl::GLenum mode, gl::GLuint start, gl::GLuint end, gl::GLsizei count, gl::GLenum type,
const void * indices =
nullptr)
const;
82 void drawRangeElementsBaseVertex(gl::GLenum mode, gl::GLuint start, gl::GLuint end, gl::GLsizei count, gl::GLenum type,
const void * indices, gl::GLint baseVertex)
const;
104 void multiDrawArrays(gl::GLenum mode,
const std::vector<MultiDrawArraysRange> & ranges)
const;
105 void multiDrawElements(gl::GLenum mode, gl::GLenum type,
const std::vector<MultiDrawElementsRange> & ranges)
const;
116 std::map<gl::GLuint, std::unique_ptr<VertexAttributeBinding>>
m_bindings;
Wrapper for OpenGL buffer objects.
Definition: Buffer.h:38
CRTP for creating objects similar to std::make_unique.
Definition: Instantiator.h:22
Superclass of all wrapped OpenGL objects.
Definition: Object.h:28
Definition: VertexArray.h:26
std::vector< VertexAttributeBinding * > bindings()
std::map< gl::GLuint, std::unique_ptr< VertexAttributeBinding > > m_bindings
Definition: VertexArray.h:116
VertexAttributeBinding * binding(gl::GLuint bindingIndex)
void bindElementBuffer(const Buffer *buffer)
void drawElementsBaseVertex(gl::GLenum mode, gl::GLsizei count, gl::GLenum type, const void *indices, gl::GLint baseVertex) const
void drawRangeElements(gl::GLenum mode, gl::GLuint start, gl::GLuint end, gl::GLsizei count, gl::GLenum type, const void *indices=nullptr) const
void multiDrawArrays(gl::GLenum mode, const std::vector< MultiDrawArraysRange > &ranges) const
void multiDrawElements(gl::GLenum mode, gl::GLenum type, const std::vector< MultiDrawElementsRange > &ranges) const
void drawElementsInstancedBaseInstance(gl::GLenum mode, gl::GLsizei count, gl::GLenum type, const void *indices, gl::GLsizei instanceCount, gl::GLuint baseInstance) const
void drawElementsInstancedBaseVertexBaseInstance(gl::GLenum mode, gl::GLsizei count, gl::GLenum type, const void *indices, gl::GLsizei instanceCount, gl::GLint baseVertex, gl::GLuint baseInstance) const
VertexArray(std::unique_ptr< IDResource > &&resource)
void enable(gl::GLint attributeIndex)
void multiDrawElementsBaseVertex(gl::GLenum mode, const gl::GLsizei *count, gl::GLenum type, const void **indices, gl::GLsizei drawCount, gl::GLint *baseVertex) const
AttributeImplementation
Definition: VertexArray.h:29
static std::unique_ptr< VertexArray > defaultVAO()
void drawArraysIndirect(gl::GLenum mode, const void *indirect=nullptr) const
const VertexAttributeBinding * binding(gl::GLuint bindingIndex) const
void multiDrawArraysIndirect(gl::GLenum mode, const void *indirect, gl::GLsizei drawCount, gl::GLsizei stride) const
void drawArraysInstancedBaseInstance(gl::GLenum mode, gl::GLint first, gl::GLsizei count, gl::GLsizei instanceCount, gl::GLuint baseInstance) const
void disable(gl::GLint attributeIndex)
static void hintAttributeImplementation(AttributeImplementation impl)
void drawElements(gl::GLenum mode, gl::GLsizei count, gl::GLenum type, const void *indices=nullptr) const
void multiDrawElements(gl::GLenum mode, const gl::GLsizei *count, gl::GLenum type, const void **indices, gl::GLsizei drawCount) const
void multiDrawArrays(gl::GLenum mode, gl::GLint *first, const gl::GLsizei *count, gl::GLsizei drawCount) const
virtual gl::GLenum objectType() const override
void drawArrays(gl::GLenum mode, gl::GLint first, gl::GLsizei count) const
void drawElementsInstancedBaseVertex(gl::GLenum mode, gl::GLsizei count, gl::GLenum type, const void *indices, gl::GLsizei instanceCount, gl::GLint baseVertex) const
void drawElementsInstanced(gl::GLenum mode, gl::GLsizei count, gl::GLenum type, const void *indices, gl::GLsizei primitiveCount) const
void multiDrawElementsBaseVertex(gl::GLenum mode, gl::GLenum type, const std::vector< MultiDrawElementsBaseVertexRange > &ranges) const
std::vector< const VertexAttributeBinding * > bindings() const
void drawArraysInstanced(gl::GLenum mode, gl::GLint first, gl::GLsizei count, gl::GLsizei instanceCount) const
void multiDrawElementsIndirect(gl::GLenum mode, gl::GLenum type, const void *indirect, gl::GLsizei drawCount, gl::GLsizei stride) const
static std::unique_ptr< VertexArray > fromId(gl::GLuint id)
void drawRangeElementsBaseVertex(gl::GLenum mode, gl::GLuint start, gl::GLuint end, gl::GLsizei count, gl::GLenum type, const void *indices, gl::GLint baseVertex) const
Definition: VertexAttributeBinding.h:24
Contains all the classes that wrap OpenGL functionality.
Definition: VertexArray.h:86
gl::GLint first
Definition: VertexArray.h:87
gl::GLsizei count
Definition: VertexArray.h:88
Definition: VertexArray.h:98
gl::GLsizei count
Definition: VertexArray.h:99
void * indices
Definition: VertexArray.h:100
gl::GLint baseVertex
Definition: VertexArray.h:101
Definition: VertexArray.h:92
void * indices
Definition: VertexArray.h:94
gl::GLsizei count
Definition: VertexArray.h:93