OpenGL VBO подсказывает использование вершин, которые редко оживляют - PullRequest
0 голосов
/ 14 января 2012

Предположим, у меня есть VBO, который остается неизменным в 95% случаев. Но остальные 5% времени это оживляет. Я не уверен, какую подсказку использовать для OpenGL при вызове glBufferData.

С одной стороны, он действует как буфер GL_STATIC_DRAW в 95% случаев. С другой стороны, GL_STREAM_DRAW рекомендуется для анимации. Должен ли я просто пойти на компромисс и передать GL_DYNAMIC_DRAW?

Или я должен объединить их и вызвать glBufferData с GL_STREAM_DRAW во время анимации, а затем сделать буфер с GL_STATIC_DRAW после завершения анимации?

1 Ответ

4 голосов
/ 14 января 2012

Единственный жизнеспособный ответ - попробовать что-нибудь и посмотреть, что лучше всего подходит для разных платформ. OpenGL не определяет производительность, и каждый драйвер будет реализовывать такие вещи по-своему. Подсказки есть подсказки; они не обязательно ничего не делают.

На самом деле AMD полностью игнорирует ваши советы по использованию; он делает то, что делает, основываясь на том, как вы на самом деле используете буфер. Это в первую очередь потому, что слишком многие пользователи GL использовали их плохо.

...