Алгоритмы пула памяти - PullRequest
3 голосов
/ 08 мая 2011

Я ищу более разумные алгоритмы для обработки VBO в OpenGL.

В настоящее время я храню каждую из своих моделей в 4MB VBO.Если размер модели превышает 4 МБ, она сохраняется отдельно.Объекты хранятся таким образом, что модели объединяются вместе, чтобы уменьшить количество связываний.

Проблема, с которой я столкнулся, заключалась в том, чтобы очистить неиспользуемые VBO, которые используют только изредка.Любые ресурсы о том, как я мог бы лучше управлять этими пулами памяти, приветствуются.

Ответы [ 2 ]

1 голос
/ 09 мая 2011

Изначально у меня было что-то похожее на тебя.Я реализовал простой список примерно из 100 строк кода, чтобы освободить сегменты VBO для повторного использования.Это значительно уменьшило перераспределение VBO, которое давало мне проблемы с кадрами.Я использовал алгоритм наилучшего соответствия для распределений, потому что у меня есть много сеток, которые имеют одинаковое количество вершин и граней.

1 голос
/ 09 мая 2011

VBO не похожи на обычную память, нет необходимости в каком-либо сложном «управлении памятью». Вы выделяете собственный VBO подходящего размера для каждой отдельной сетки, и с этим можно покончить. Любая попытка перехитрить драйвер просто приведет к снижению производительности.

Также нет смысла пытаться сделать ваши VBO максимально большими. На самом деле, по моему опыту, лучше всего работают VBO небольшого размера с вершинами от 0,5 до 5 тыс.

...