chore(vao): add comments

This commit is contained in:
2026-01-07 19:23:27 +01:00
parent ed73fc5483
commit 3c7e931a89
2 changed files with 28 additions and 14 deletions

View File

@@ -4,24 +4,35 @@
#include <stddef.h> #include <stddef.h>
#include "glad/glad.h" #include "glad/glad.h"
namespace core
{
class VAO class VAO
{ {
private: private:
unsigned int id; GLuint id;
public: public:
// Generates a new Vertex Array Object on the GPU
VAO(); VAO();
// Deletes the VAO from GPU memory
~VAO(); ~VAO();
// Bind this VAO as the current active vertex array
// All subsequent vertex attribute calls will affect this VAO
void bind(); void bind();
// Unbind the VAO (bind VAO 0)
// This prevents accidental modification of the currently bound VAO
void unbind(); void unbind();
// Define how vertex data is interpreted by OpenGL
void setAttributePointer(GLuint index, GLuint size, GLenum type, void setAttributePointer(GLuint index, GLuint size, GLenum type,
GLsizei stride, const void* offset); GLsizei stride, const void *offset);
// Draw elements using the currently bound EBO (Element Buffer Object)
void drawElement(GLenum mode, GLsizei count, GLenum type, void drawElement(GLenum mode, GLsizei count, GLenum type,
const void* indices); const void *indices);
// Draw arrays directly from the VBOs (no EBO required)
void drawArray(GLenum mode, GLint first, GLsizei count); void drawArray(GLenum mode, GLint first, GLsizei count);
}; };
} // namespace core
#endif #endif

View File

@@ -1,27 +1,30 @@
#include "vao.hpp" #include "core/vao.hpp"
VAO::VAO() { glGenVertexArrays(1, &id); } core::VAO::VAO() { glGenVertexArrays(1, &id); }
VAO::~VAO() { glDeleteVertexArrays(1, &id); } core::VAO::~VAO() { glDeleteVertexArrays(1, &id); }
void VAO::bind() { glBindVertexArray(id); } void core::VAO::bind() { glBindVertexArray(id); }
void VAO::unbind() { glBindVertexArray(0); } void core::VAO::unbind() { glBindVertexArray(0); }
void VAO::setAttributePointer(GLuint index, GLuint size, GLenum type, void core::VAO::setAttributePointer(GLuint index, GLuint size, GLenum type,
GLsizei stride, const void* offset) GLsizei stride, const void *offset)
{ {
// Enable the attribute at the given index
glEnableVertexAttribArray(index); glEnableVertexAttribArray(index);
// Define the layout of the vertex attribute
glVertexAttribPointer(index, size, type, GL_FALSE, stride, offset); glVertexAttribPointer(index, size, type, GL_FALSE, stride, offset);
} }
void VAO::drawElement(GLenum mode, GLsizei count, GLenum type, void core::VAO::drawElement(GLenum mode, GLsizei count, GLenum type,
const void* indices) const void *indices)
{ {
glDrawElements(mode, count, type, indices); glDrawElements(mode, count, type, indices);
} }
void VAO::drawArray(GLenum mode, GLint first, GLsizei count) void core::VAO::drawArray(GLenum mode, GLint first, GLsizei count)
{ {
glDrawArrays(mode, first, count); glDrawArrays(mode, first, count);
} }