Desculpas, eu ia adicionar um comentário ao seu tópico de perguntas, mas descobri que acabei elaborando demais. Minha experiência em desenvolvimento é do ponto de vista do DX 11, portanto, parte disso pode não ser válida no OpenGL
A localização da memória dos dados certamente desempenha um papel importante. Mas existem alguns outros itens que contribuem para isso, a largura dos dados, como você conhece. Eu tive algumas GPUs e tive um grande desempenho em algumas baseadas em certos pontos críticos. Esse é o exemplo, no meu antigo AMD r290, se bem me lembro, você poderia basicamente passar até 4 float4s para o buffer de vértice sem custo adicional acima de 1, mas depois que eu publiquei> 4, houve uma queda mensurável (no quadro taxa). Isso é puramente fora da minha lembrança e, portanto, é anedótico da melhor forma. Mas sustenta que a arquitetura da GPU está mudando o tempo todo e que técnicas de nicho que oferecem uma vantagem no desempenho hoje, talvez a desgraça do seu desempenho amanhã. EU'
Dito isto, você fez a pergunta sobre a ordem dos vértices, e certamente isso ajudará marginalmente. O ganho de desempenho é quando você combina isso com buffers de índice, o que permite ao hardware otimizar e armazenar em cache os vértices já calculados. Você certamente pode obter ainda mais ganhos com tiras de triângulo, etc., que foram encomendadas especificamente de acordo com seus pensamentos. A maioria das renderizações de modelos que eu faço são modelos otimizados baseados em índices / vértices com instanciamento, eu uso uma pequena quantidade de pesquisas para efeitos de movimento cíclico (galhos de árvores, por exemplo); nesses casos, todo o galho da árvore procura o mesmo valor. Portanto, o cache também pode ser aproveitado aqui.
Tudo o que posso dizer em resumo de mim mesmo é:
- Tente não pensar demais na otimização no início, enquanto você ainda está desenvolvendo seu jogo / aplicativo e tente não otimizar prematuramente. Se você precisar voltar e adicionar novos recursos, poderá perder todo o esforço. Você tem o meu hábito talvez> <, adoro tentar obter o melhor desempenho e técnicas
- As arquiteturas de GPU são variadas e os pontos fortes de um podem refletir pontos fracos em outro. A AMD e a Nvidia são famosas por fazer com que os desenvolvedores otimizem os jogos para sua arquitetura, por um motivo, cada um tem vantagens / desvantagens. Seguir o caminho intermediário do desenvolvimento pode ser o melhor lugar, não use nenhum recurso baseado em fornecedor de hardware (opinião aqui). (adicione a isso, alguns formatos compactados existem apenas na AMD).
Estes são apenas alguns pensamentos e experiências que tive. Existem muitos livros por aí que você deve colocar em suas mãos sobre esses mesmos tópicos. Não vi muitos prescreverem o que você está propondo, mas isso não significa que esteja errado. Boa sorte.