Извинения, я собирался добавить комментарий к вашей ветке вопросов, но обнаружил, что закончил слишком много. Мой опыт разработки с точки зрения DX 11, поэтому некоторые из них могут не сохраняться в OpenGL
Местность памяти данных, безусловно, играет важную роль. Но есть несколько других вещей, которые играют в этом, ширину данных, как вы знаете. У меня было несколько графических процессоров, и некоторые из них сильно пострадали из-за определенных переломных моментов. Это, например, на моем старом AMD r290, если я помню, вы могли бы в основном передать до 4 float4s через буфер вершин без дополнительных затрат, превышающих 1, но как только я отправил> 4, тогда произошло измеримое падение (в кадре ставка). Это чисто мое воспоминание и, как лучше всего, анекдотично. Но он считает, что архитектура GPU постоянно меняется, и какие нишевые технологии, которые дают вам преимущество в производительности сегодня, могут быть проклятием вашей производительности завтра. Я'
Сказав это, вы задали вопрос об упорядочении вершин, и, безусловно, это поможет незначительно. Повышение производительности происходит, когда вы комбинируете это с индексными буферами, что позволяет оборудованию оптимизировать и кэшировать уже рассчитанные вершины. Вы, конечно, можете получить еще больше прибыли от полос треугольника и т. Д., Которые специально заказаны согласно вашим мыслям. Большая часть рендеринга моделей - это оптимизированные модели на основе индексов / вершин с созданием экземпляров, я использую небольшое количество поисков для эффектов циклического движения (например, ветви дерева), в этих случаях вся ветвь дерева ищет одно и то же значение. Таким образом, кэширование может быть использовано и здесь.
Все, что я могу сказать в заключение от себя:
- Старайтесь не задумываться об оптимизации с самого начала, пока вы все еще разрабатываете свою игру / приложение, старайтесь не преждевременно оптимизировать. Если вам нужно вернуться и добавить новые возможности, вы можете потерять все усилия. У тебя есть моя привычка, может быть,> <, люблю пытаться получить лучшую производительность и технику
- Архитектура GPU разнообразна, и сильные стороны одного могут отражать слабые стороны другого. AMD и Nvidia известны разработчиками для оптимизации игр под свою архитектуру, поэтому у каждого есть свои преимущества и недостатки. Лучше всего пойти по срединному пути развития, не используйте какие-либо аппаратные функции, предоставляемые вендорами (мнение здесь). (добавьте, что некоторые упакованные форматы существуют только в AMD).
Это всего лишь несколько мыслей и переживаний, которые у меня были. Есть много книг, которые вы должны получить в руки по этим темам. Я не видел, чтобы многие прописывали то, что вы предлагаете, но это не значит, что это неправильно. Удачи.