* La façon dont tes données sont représentées en mémoire : des tableaux interlacés (interleaved arrays - avec des strides multiples de 4 octets) donnent en principe de meilleures performances (meilleure localité spatiale), sauf si tes données sont constamment modifiées et qu'il faut sans cesse réinterlacer ou remettre à jour plus que nécessaire.
* Utiliser des indices quand cela se justifie (i.e. si économie notable de mémoire et de bande passante).
* Minimiser les changements d'états (rendre en une fois tous les objets qui doivent être rendus de la même façon - mêmes shaders, etc). Essentiel.
* Minimiser les allers-retours mémoire (render targets, mise à jour des données géométriques ou de textures, etc).
* Minimiser le jeu de données (taille des textures, des géométries, des buffers, etc)
* Garder des shaders simples et efficaces.
* Comprendre où se situent les goulots d'étranglement dans ton appli (cpu/gpu, texture interpolation, vertex shaders et traitements géométriques, fragments shaders, rasterization, etc) pour agir sur eux et pas au pif.
Partager