Самый быстрый способ обновить OpenGL VBO (включая, возможно, расширяющийся буфер)

#python #opengl #vbo #pyopengl

#python #opengl #vbo #pyopengl

Вопрос:

У меня есть буфер, который пользователь может обновлять во время выполнения. Код работает, однако окно заметно зависает всякий раз, когда вы обновляете буфер. Я предполагаю, что это связано с тем, как я загружаю данные в буфер: я использую glBufferData with None для очистки данных, а затем я использую glBufferSubData для загрузки данных в буфер. Обратите внимание, что размер буфера также может увеличиваться.

Итак, каков самый быстрый способ полностью обновить буфер и / или увеличить его размер? Я знаю, что вы можете использовать glMapBuffer , однако я использую Python, поэтому я не знаком с указателями на пространство памяти.

Комментарии:

1. Вопрос о Python добавляет сложность в том, что вы не можете выполнять всевозможные трюки, которые вы можете на более низкоуровневых языках (отображение и т.д.). И без этой хитрости я не знаю, есть ли способ добиться хорошей производительности в этих сценариях. Возможно, что PyOpenGL имеет некоторую абстракцию вокруг такого обмана, но вам придется взглянуть на его API, чтобы знать.

2. Потому что большую часть времени мне приходится увеличивать размер буфера, чтобы затем я мог отправлять больше данных (потому что мне нужно отобразить больше граней) с glBufferSubData , который может отправлять данные только до максимального размера буфера.