Я только что нашел следующую спецификацию OpenGL для ARB_map_buffer_range
.
Мне интересно, можно ли выполнять неблокирующие вызовы карты, используя это расширение?
В настоящее время в моем приложении я выполняю рендеринг в FBO, который затем сопоставляю с буфером PBO хоста.
glMapBuffer(target_, GL_READ_ONLY);
Однако проблема в том, что он блокирует поток рендеринга во время передачи данных.
I может уменьшить эту проблему путем конвейерной обработки рендеринга, но задержка является большой проблемой в моем приложении.
Мой вопрос заключается в том, могу ли я использовать 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();
Я не уверен в том, как я узнаю, что операция карты готова, в спецификации упоминаются только «другие методы синхронизации для обеспечить правильную работу ".
Есть идеи?
-121 --- 1 445908-
Возможный дубликат:
Будет ли сборщик мусора вызывать для меня IDisposable.Dispose?
У меня есть класс, который имеет некоторые неуправляемые ресурсы. Мой класс реализует интерфейс IDisposable
и освобождает неуправляемые ресурсы в методе Dispose ()
. Обязательно ли мне вызывать метод Dispose ()
или он будет как-то вызываться автоматически? Будет ли его вызывать сборщик мусора?