Несинхронизированная / неблокирующая карта Opengl

Я только что нашел следующую спецификацию OpenGL для ARB_map_buffer_range .

Мне интересно, можно ли с помощью этого расширения выполнять неблокирующие вызовы карты?

В настоящее время в моем приложении выполняется рендеринг в FBO, который затем отображается в буфер PBO хоста.

glMapBuffer(target_, GL_READ_ONLY);  

Однако проблема заключается в том, что он блокирует поток рендеринга при передаче данных.

Я мог бы уменьшить эту проблему, используя конвейерную обработку рендеринга, но задержка является большой проблемой в моем приложении.

Мой вопрос заключается в том, могу ли я использовать map_buffer_range с MAP_UNSYNCHRONIZED_BIT и дождаться завершения операции карты в другом потоке или отложить операцию карты в том же потоке, пока поток рендеринга визуализирует следующий кадр.

например.

thread 1:

map();
render_next_frame();

thread 2:

wait_for_map

или

thread 1:

map();
while(!is_map_ready())
   do_some_rendering_for_next_frame();

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

Есть идеи?

7
задан genpfault 6 August 2011 в 17:51
поделиться