Я разрабатываю приложение OpenGL с использованием OpenGL2.1 и хочу загружать текстуры через потоки.
Что я сделал до сих пор:
Все работает нормально, за исключением того, что я замечаю небольшую задержку, когда происходит загрузка текстуры! Я знаю, что это потому, что драйвер должен синхронизировать два контекста. Проблема в том, что я хочу, чтобы это передавало текстуру. Я не хочу обновлять текстуру позже. Я просто хочу загрузить текстуры в фоновом режиме, отображая «почти плавную» загрузочную анимацию без остановки всего приложения.
Это то, что я искал и обнаружил, что PBO могут использоваться для передачи данных DMA данных пикселей. Можно ли использовать PBO для загрузки текстуры? Если так, то как?
Вам не нужен второй контекст для загрузки асинхронных данных текстуры. Просто убедитесь, что вы не используете буфер сразу после запуска загрузки, иначе он остановится в ожидании завершения копирования.
Вот пример этого процесса: http://www.songho.ca/opengl/gl_pbo.html#unpack
А вот еще немного информации о том, что такое ОПО и как их следует использовать: http://www.opengl.org/wiki/Pixel_Buffer_Object