OpenGL ES, слишком раннее заполнение VBO и IBO приводит к отсутствию буферов?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Гость
 OpenGL ES, слишком раннее заполнение VBO и IBO приводит к отсутствию буферов?

Сообщение Гость »


Существует ли правило, когда можно заполнять VBO/IBO? Потому что у меня есть объект BufferGeometry, который должен инициализировать vbo и ibo. Однако, если я использую заполненные значения при рендеринге, ничего не отображается. Связывание буферов и последующая передача одних и тех же данных волшебным образом решает проблему. Я также протестировал генерацию идентификаторов для vbo и ibo во время конструктора, а затем просто повторно заполнил буферы один раз в цикле. Это также решает проблему. Итак, похоже, что генерация vbo и ibo работает нормально, а использование glBufferData в конструкторе — нет. Я что-то упустил?

вызывается внутри цикла:

bool call = false; void RenderMesh(std::shared_ptr& сетка) { станд::строка errMsg; Материал и материал = материалы.at(mesh->getMaterialID()); BufferGeometry& Geometry = geometries.at(mesh->getGeometryID()); материал.setMVP( сетка->getModelMatrix(), activeCamera->getViewMatrix(), activeCamera->getProjectionMatrix() ); если(!вызывается) { std::vector arr; геометрия.CreateBuffers(arr); //Один раз здесь работает?? называется = правда; } glUseProgram(material.getProgram()); glBindBuffer (GL_ARRAY_BUFFER, геометрия.VBO); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, Geometry.IBO); геометрия.LoadAttributes(материал); материал.LoadUniforms(); Ошибка GLint = glGetError(); если (ошибка!= GL_NO_ERROR) log_e("Ошибка GL: " + std::to_string(ошибка)); glDrawElements(GL_TRIANGLES, Geometry.getIndexCount(), GL_UNSIGNED_INT, nullptr); glBindBuffer (GL_ARRAY_BUFFER, 0); glBindBuffer (GL_ELEMENT_ARRAY_BUFFER, 0); glUseProgram (0); } Эта функция вызывается один раз при инициализации, в настоящее время вызывается один раз внутри цикла в целях отладки. Если я вызываю функцию во время конструктора, у меня есть действительные идентификаторы vbo и ibo, но при привязке и последующем рисовании ничего не отображается. Однако вызов его внутри цикла один раз работает. (Примечание: раньше _mergedBuffer был mergedBuffer, изменен, чтобы я мог вызывать его из цикла без необходимости передавать действительный вектор, хранящийся внутри объекта):
void BufferGeometry::CreateBuffers(std::vector& _mergedBuffer) { std::vector mergedBuffer = атрибуты.at(ATTRIBUTE_TYPE_POSITION).dataArr; glGenBuffers(1, &VBO); glBindBuffer (GL_ARRAY_BUFFER, VBO); glBufferData(GL_ARRAY_BUFFER, mergedBuffer.size() * sizeof(float), mergedBuffer.data(), GL_STATIC_DRAW); glGenBuffers(1, &IBO); glBindBuffer (GL_ELEMENT_ARRAY_BUFFER, IBO); glBufferData(GL_ELEMENT_ARRAY_BUFFER, index.size() * sizeof(uint32_t), index.data(), GL_STATIC_DRAW); glBindBuffer (GL_ARRAY_BUFFER, 0); glBindBuffer (GL_ELEMENT_ARRAY_BUFFER, 0); Ошибка GLenum = glGetError(); если (ошибка!= GL_NO_ERROR) log_e("Ошибка GL: " + std::to_string(ошибка)); }
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • OpenGL ES, слишком раннее заполнение VBO и IBO приводит к отсутствию буферов?
    Гость » » в форуме C++
    0 Ответы
    37 Просмотры
    Последнее сообщение Гость
  • Qt и OpenGL: невозможно инициализировать VBO или VAO openGL после первого вызова PaintGL?
    Anonymous » » в форуме C++
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Qt и OpenGL: невозможно инициализировать OpenGL VBO или VAO после первого вызова PaintGL?
    Anonymous » » в форуме C++
    0 Ответы
    36 Просмотры
    Последнее сообщение Anonymous
  • Растворение полигонов в Python приводит к отсутствию некоторых полигонов.
    Anonymous » » в форуме Python
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Встраивание OpenCV в статическую библиотеку приводит к отсутствию функций
    Anonymous » » в форуме C++
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»