Название говорит все, но для того, чтобы быть ясным, я добавлю дополнительные слова.
В этом случае изменение размера означает:
- получить больше места для хранения в конце старого vbo
- сохранение старых данных на передней панели
- (надеюсь, что не копируем, но по крайней мере не на стороне процессора, то есть драйвер должен справиться с этим)
ИЗМЕНИТЬ
Как объяснить некоторые подробности и оправдать мой вопрос:
Я буду хранить данные (в forehand) неизвестного размера для VBO, но я знаю только верхний предел, который является очень грубой оценкой (в 10 - 100 раз больше или даже больше в необычных условиях).
Конечно, я знаю, сколько данных я хранил, когда я закончил с ним, поэтому было бы неплохо хранить данные, пока я не найду свой VBO слишком малым и не изменю его размер, а затем продолжаю хранить.
Вот почему я не хочу копировать (особенно на стороне процессора):
Я делаю все это на GPU, чтобы получить интерактивные частоты кадров. Когда мне приходится копировать, это очень медленно или даже невозможно, потому что места недостаточно. Хуже всего копировать данные по процессору, следовательно, передавать все по шине, в новую область памяти с достаточным размером, а затем glBufferData
с VBO с новым размером и новой областью памяти в качестве источника. Это будет убийца производительности.
обойдена
Я обошел проблему с точной оценкой необходимого пространства. Но я оставлю этот вопрос без ответа в течение недели, чтобы узнать, есть ли у кого-то другой намек на это, поскольку я не очень доволен решением.