57 if (
CORI_CORE_CHECK(!vertexBuffer->GetLayout().GetElements().empty(),
"VertexArray: (GL_RuntimeID: {}): Trying to add VBO that has no layout", m_ID)) {
return; }
59 glBindVertexArray(m_ID);
62 const VBLayout& layout = vertexBuffer->GetLayout();
63 for (
const auto& element : layout) {
65 for (
size_t i = 0; i < element.GetComponentCount(); ++i) {
66 glEnableVertexAttribArray(index);
67 glVertexAttribPointer(index,
static_cast<GLint
>(element.GetComponentCount()),
ShaderDataTypeToGLDataType(element.m_Type), element.m_Normalized ? GL_TRUE : GL_FALSE,
static_cast<GLsizei
>(layout.
GetStride()),
reinterpret_cast<const void*
>(element.m_Offset +
sizeof(
float) * element.GetComponentCount() * i));
69 if (element.m_Divisor > 0) {
70 glVertexAttribDivisor(index, element.m_Divisor);
77 for (
size_t i = 0; i < element.GetComponentCount(); i++) {
78 glEnableVertexAttribArray(index);
79 glVertexAttribPointer(index,
static_cast<GLint
>(element.GetComponentCount()),
ShaderDataTypeToGLDataType(element.m_Type), element.m_Normalized ? GL_TRUE : GL_FALSE,
static_cast<GLsizei
>(layout.
GetStride()),
reinterpret_cast<const void*
>(element.m_Offset +
sizeof(
float) * element.GetComponentCount() * i));
81 if (element.m_Divisor > 0) {
82 glVertexAttribDivisor(index, element.m_Divisor);
89 glEnableVertexAttribArray(index);
90 glVertexAttribPointer(index,
static_cast<GLint
>(element.GetComponentCount()),
ShaderDataTypeToGLDataType(element.m_Type), element.m_Normalized ? GL_TRUE : GL_FALSE,
static_cast<GLsizei
>(layout.
GetStride()),
reinterpret_cast<const void*
>(element.m_Offset));
92 if (element.m_Divisor > 0) {
93 glVertexAttribDivisor(index, element.m_Divisor);
100 m_VertexBuffers.push_back(vertexBuffer);