Что не так с классом для создания VBO, VAO и EBO

что я сделал не так в классе для создания VBO, VAO и EBO?

класс .h:

#pragma once
#include <vector>

class VO {
private:
    unsigned int VAO;
    unsigned int VBO;
public:
    void createVertexObjects(std::vector<float> vertices, int8_t verticesCount, std::vector<unsigned int> indices);
    void unBind();

    unsigned int getVAO() { return VAO; }

    ~VO();
};

класс .cpp:

#include "VertexObjects.h"
#include "GLAD/glad.h"

void VO::createVertexObjects(std::vector<float> vertices, int8_t verticesCount, std::vector<unsigned int> indices)
{
    unsigned int EBO;

    glGenVertexArrays(1, &VAO);
    glGenBuffers(1, &VBO);
    glGenBuffers(1, &EBO);

    glBindVertexArray(VAO);
    glBindBuffer(GL_ARRAY_BUFFER, VBO);
    glBufferData(GL_ARRAY_BUFFER, vertices.size() * sizeof(float), vertices.data(), GL_STATIC_DRAW);

    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);
    glBufferData(GL_ELEMENT_ARRAY_BUFFER, indices.size() * sizeof(unsigned int), indices.data(), GL_STATIC_DRAW);

    glEnableVertexAttribArray(0);
    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE,  verticesCount * sizeof(float), (void*)0);

    glBindBuffer(GL_ARRAY_BUFFER, 0);
}

void VO::unBind()
{
     glBindVertexArray(0);
}

VO::~VO()
{
    glDisableVertexAttribArray(0);
    glDeleteBuffers(1, &this->VBO);
    glDeleteVertexArrays(1, &this->VAO);
}

Данные для VBO и EBO:

  1. Координаты вершин:

     std::vector<float> vertices = {
         -0.5f, -0.5f, 0.0f,
         0.5f, -0.5f, 0.0f,
         0.0f, 0.5f, 0.0f
     };
    
  2. Индексы для EBO:

     std::vector<unsigned int> indices = {
         1, 2, 3
     };
    

Ответы (1 шт):

Автор решения: LGL

Я решил проблему. Раньше в классе треугольника, в функции "createVO()"(где и создавался VAO, VBO и EBO через функцию "VO::createVertexObject()") я объявлял объект класса VO, теперь же я объявил объект как член класса(в .h файле). И заработало! Но я так и не понял почему тогда оно не работало.

→ Ссылка