Загрузка текстуры OpenGL с использованием PBO?

Я разрабатываю приложение OpenGL с использованием OpenGL2.1 и хочу загружать текстуры через потоки.

Что я сделал до сих пор:

  1. Создайте второй контекст и поделитесь между двумя
  2. Загрузить данные текстуры в потоке

Все работает нормально, за исключением того, что я замечаю небольшую задержку, когда происходит загрузка текстуры! Я знаю, что это потому, что драйвер должен синхронизировать два контекста. Проблема в том, что я хочу, чтобы это передавало текстуру. Я не хочу обновлять текстуру позже. Я просто хочу загрузить текстуры в фоновом режиме, отображая «почти плавную» загрузочную анимацию без остановки всего приложения.

Это то, что я искал и обнаружил, что PBO могут использоваться для передачи данных DMA данных пикселей. Можно ли использовать PBO для загрузки текстуры? Если так, то как?

1

Решение

Вам не нужен второй контекст для загрузки асинхронных данных текстуры. Просто убедитесь, что вы не используете буфер сразу после запуска загрузки, иначе он остановится в ожидании завершения копирования.

Вот пример этого процесса: http://www.songho.ca/opengl/gl_pbo.html#unpack

А вот еще немного информации о том, что такое ОПО и как их следует использовать: http://www.opengl.org/wiki/Pixel_Buffer_Object

3

Другие решения


По вопросам рекламы [email protected]