OpenGL буферы. Страйд против плотно упакованных

Каковы плюсы и минусы использования буферов вершин по сравнению с плотно упакованными буферами для каждого атрибута? Я имею в виду, например:

Страйд: xyzrgb xyzrgb xyzrgb

Tight: xyzxyzxyz rgbrgbrgb

На первый взгляд может показаться, что вы легко можете изменить размер при использовании шага, но содержимое буфера вершин удаляется, когда вы перераспределяете его с помощью glBufferData.

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

Кажется, существует распространенная практика использования чередующегося буфера (шага). Это почему? Что-то, чего мне здесь не хватает?

1 ответ

Решение

Я думаю, что обычно есть чередующийся буфер, потому что его легче создать (включает меньше буферов, более интуитивно понятен) и, предположительно, быстрее (из-за шаблонов доступа к памяти или чего-то подобного), большое преимущество плотной упаковки - возможность обновления только данные, которые нужно обновить, что приводит к более быстрому обновлению. Большинство учебных пособий по OpenGL рассказывают о VBO, рисуя статические сетки, которые не нуждаются в обновлениях и поэтому получают выгоду от чередующихся данных.

Общее мнение выглядит следующим образом: чередовать как можно больше, разбивать при необходимости.

См.: Как представление с чередованием вершин помогает производительности?

И: увеличение производительности при использовании чередующихся массивов атрибутов в OpenGL4.0

Смотрите также: http://www.opengl.org/wiki/Vertex_Specification_Best_Practices

Который прямо заявляет:

"То, насколько чередующиеся атрибуты помогают в производительности рендеринга, не совсем понятно. Профилирующие данные необходимы. Чередующиеся данные вершин могут занимать больше места, чем не чередующиеся из-за необходимости выравнивания".

Другие вопросы по тегам