Как сделать Memcpy Asynchronous при загрузке текстур с PBO OpenGLC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как сделать Memcpy Asynchronous при загрузке текстур с PBO OpenGL

Сообщение Anonymous »

Я использую Pixel Pixel Buffer Objects (PBO) с постоянными сопоставленными буферами для асинхронного обновления текстур в моем приложении QT. В моей петле рендеринга я делаю что -то вроде этого: < /p>

Код: Выделить всё

void GLWidget::updateTextures() {
for (int i = 0; i < workers.getVideoCount(); ++i) {
std::shared_ptr frame = workers.getNextFrame(i);
if (!frame) continue;

int nextIndex = (pboIndex[i] + 1) % MAX_PBO;

glBindBuffer(GL_PIXEL_UNPACK_BUFFER, pboIds[i][nextIndex]);
void* ptr = glMapBuffer(GL_PIXEL_UNPACK_BUFFER, GL_WRITE_ONLY);
if (ptr) {
memcpy(ptr, frame->bits(), frame->width() * frame->height() * 3);  // This blocks and eats render time
glUnmapBuffer(GL_PIXEL_UNPACK_BUFFER);
}

glBindTexture(GL_TEXTURE_2D, textureId[i]);
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, frame->width(), frame->height(), GL_RGB, GL_UNSIGNED_BYTE, 0);
glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
glBindTexture(GL_TEXTURE_2D, 0);

pboIndex[i] = nextIndex;
}
}
Как я могу сделать загрузку данных текстуры (особенно в Memcpy в PBO) асинхронную или разгруженную в другой поток, не задерживая основной цикл рендеринга?

Подробнее здесь: https://stackoverflow.com/questions/796 ... pengl-pbos
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Привязка текстур DirectX 12 вызывает ошибку memcpy
    Anonymous » » в форуме C++
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Как запросить текущий статус памяти OpenGL PBO (всего/доступно на данный момент)?
    Anonymous » » в форуме C++
    0 Ответы
    107 Просмотры
    Последнее сообщение Anonymous
  • Остановка асинхронного PBO OpenGL
    Anonymous » » в форуме C++
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Как объединить данные координат текстур многих различных объектов в один vbo для атласа текстур
    Anonymous » » в форуме JAVA
    0 Ответы
    37 Просмотры
    Последнее сообщение Anonymous
  • Как избежать утечки памяти при повторном использовании буферов положения, нормалей и текстур в OpenGL
    Anonymous » » в форуме JAVA
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

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