Я пишу приложение OpenGL 3.3 C в Windows 10. У меня оно работает большую часть времени.Иногда vbo меша не содержит правильных данных.В других случаях это так.В коде нет изменений.
Я попытался перезагрузить компьютер и обновил графический драйвер.Я запустил его в RenderDoc, чтобы убедиться, что я делаю вещи в правильном порядке.
glGenVertexArrays(1, &mesh->vao);
glBindVertexArray(mesh->vao);
glGenBuffers(1, &mesh->verts);
glBindBuffer(GL_ARRAY_BUFFER, mesh->verts);
glBufferData(GL_ARRAY_BUFFER, sizeof(float) * data->vertCount * 2, &data->verts[0], GL_STATIC_DRAW);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, NULL);
glEnableVertexAttribArray(0);
glGenBuffers(1, &mesh->ebo);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, mesh->ebo);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(unsigned int) * data->indicieCount, &data->indicies[0], GL_STATIC_DRAW);
А затем выполнить рендеринг.Обратите внимание, что render-> meshes [i] -> count был установлен на счетчик индикаторов
glBindVertexArray(render->meshes[i]->vao);
glEnableVertexAttribArray(0);
glDrawElements(GL_TRIANGLES, render->meshes[i]->count, GL_UNSIGNED_INT, NULL);
Данные вершин и индикетов должны быть правильно загружены и сохранены в OpenGL.При просмотре в RenderDoc данные vbo частично / полностью неверны.У меня было несколько циклов for, прежде чем вручную распечатывать данные, чтобы проверить поступающие данные.Перед загрузкой данные всегда верны.