Держите указатель glMapBuffer живым - PullRequest
1 голос
/ 21 марта 2020

В настоящее время я работаю с OpenGL - версия 4.4, и у меня возник вопрос о функции glMapBuffer. В некоторых других API, которые я использовал (например, DX12 и VK), вы можете сохранить указатель, который функция карты возвращает живым, и flu sh память с отдельным вызовом вместо освобождения этого указателя.

Есть ли способ сохранить этот указатель на более длительный период времени и обновить память графического процессора без освобождения этого указателя, вызывая glUnmapBuffer?

1 Ответ

3 голосов
/ 22 марта 2020

Буферный объект, который имеет неизменное хранилище (используя gl(Named)BufferStorage из GL 4.4 или ARB_buffer_storage), может быть выделен с помощью флага GL_MAP_PERSISTENT_BIT. Это позволяет glMap(Named)BufferRange получать один и тот же флаг и, таким образом, постоянно отображать этот диапазон хранилища буфера.

Буфер, хранилище которого постоянно отображается , может использоваться для многих операций буфера без не нанесен на карту первым. Однако ответственность за всю синхронизацию доступа к данным теперь лежит на user . Так что освоитесь с использованием заборов и двойной буферизации, чтобы получал доступ к данным .

...