Можно ли совместно использовать объект framebuffer opengl между контекстами/потоками?
Я хочу сделать свою сцену в одном потоке, а затем разбить результат в окне, принадлежащем другому потоку. Чтобы избежать чтения фреймбуфера обратно в память процессора, я хотел бы использовать объект framebuffer. До сих пор мне не удалось заставить это работать (белая текстура), что заставляет меня поверить, что это не поддерживается opengl.
- Можно ли совместно использовать объекты фреймбуфера между различными контекстами?
- Можно ли использовать объект framebuffer между разными потоками, учитывая, что объект связан только одним потоком за раз?
Если кто-то может указать мне, где это описано в документации, это будет бонус.
Ответы
Ответ 1
Невозможно разделить фреймбуферы между различными контекстами. См. Первый абзац Приложения D, спецификация OpenGL 3.3. Тем не менее, вы можете делиться текстурами и рендерингами, которые должны предоставить вам нужную вам информацию.
Что касается потоковой передачи: это должно быть возможно, но обычно рекомендуется не выпускать команды GL из нескольких потоков (потому что очень сложно синхронизировать). Обычно вы копируете содержимое в объект-пиксель-буфер и отображаете его из потока GL, а затем используете отображаемый указатель из другого потока.