Как важно отправлять данные чередующихся вершин на ios - PullRequest
2 голосов
/ 22 марта 2012

Я использую Assimp для импорта некоторых 3d-моделей.

Assimp великолепен, но хранит все в формате вершин без чередования.

Согласно Руководству по программированию Apple OpenGL ES,данные с чередованием вершин предпочтительнее на ios: https://developer.apple.com/library/ios/#documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/TechniquesforWorkingwithVertexData/TechniquesforWorkingwithVertexData.html#//apple_ref/doc/uid/TP40008793-CH107-SW8

Я использую VertexArrays для консолидации всех изменений состояния, связанных с буфером. Стоит ли все еще пытаться чередовать все данные вершин?

1 Ответ

2 голосов
/ 22 марта 2012

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

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

Загрузка нескольких буферов вершин и их объединение в массив вершин теоретически позволят драйверу выполнить эту оптимизацию за вашей спиной (либо для дублирования памяти, либо после того, как станет достаточно уверенно, что буферы являются массивом, как правило, в другом месте) но я не уверен, что так и будет. Но с другой стороны, вы можете сами оптимизировать процесс в самом конце конвейера данных, поэтому вам не нужно заранее планировать его или менять набор инструментов. Это оптимизация, поэтому, если для ее реализации требуется значительная работа, применимо общее правило в отношении преждевременной оптимизации - подождите, пока у вас не будет жестких данных о производительности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...