Вызов OpenGL для gldrawelements вызывает ошибку сегментации
Я пытаюсь настроить мой рендерер на использование индексных буферов, однако при использовании glDrawElements я получаю ошибку сегментации. Код настройки ниже:
IndexBuffer::IndexBuffer(std::vector<unsigned int> indices){
glGenBuffers(1, &m_id);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_id);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, indices.size() * sizeof(indices[0]), indices.data(), GL_STATIC_DRAW);
}
Это код в классе массива вершин, который вызывает вышеуказанный метод:
void VertexArray::addIndices(std::vector<unsigned int> indices) {
bind();
IndexBuffer indexBuffer(indices);
}
Это основной метод:
int main() {
Window* window = new Window("My Game", 1280, 720);
Shader shader("shader.vert", "shader.frag");
Renderer renderer(shader);
Camera camera;
std::vector<Entity*> entities;
std::vector<float> vertices = {-0.5f, -0.5f, 0.0f,
0.5f, -0.5f, 0.0f,
0.5f, 0.5f, 0.5f,
-0.5f, 0.5f, 0.0f
};
std::vector<float> textureCoords = {0, 0,
1, 0,
1, 1,
0, 1
};
std::vector<unsigned int> indices = {0, 1, 2,
2, 3, 0};
Model model(vertices, indices, textureCoords);
Entity entity(model, glm::vec3(0, 0, 0), glm::vec3(0, 0, 0), glm::vec3(1, 1, 1));
entities.push_back(&entity);
Texture texture("texture.png");
shader.bind();
texture.bind();
while(window->isOpen()){
camera.update(window->getM_Keys());
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
renderer.render(entities, camera);
window->update();
}
}
Это метод рендеринга:
void Renderer::render(std::vector<Entity*> entities, const Camera& camera) {
m_Shader.loadViewMatrix(Maths::createViewMatrix(camera));
for(Entity* entity : entities){
prepareEntity(*entity);
glDrawElements(GL_TRIANGLES, entity->getModel().getVerticesCount(), GL_UNSIGNED_INT, 0);
}
}