2010-11-11 5 views
6

Beaucoup de sites/articles disent 'batch! lot! lot!'. Quelqu'un peut-il expliquer ce que le 'batching' représente par rapport aux shaders?3D Graphics Batching

A savoir, ne

  1. textures changeantes
  2. changement des variables de shaders arbitraires

signifient quelque chose ne peut pas être 'par lots'?

(Désolé si cela est une question retardée: D)

Répondre

8

La meilleure façon de résumer est d'essayer de faire comme quelques appels API que vous pouvez pour dessiner ce que vous devez dessiner. En utilisant des tableaux de vertex ou des VBO (même pas optionnels dans les API modernes), les atlas de texture et en évitant le besoin de changements d'état contribuent tous à cela. C'est vraiment incroyable combien de triangles un GPU moderne peut dessiner dans le temps qu'il vous faut pour faire demi-tour et configurer le prochain appel de dessin.

+0

Et en appliquant cela à vos deux points, changer les choses annule le traitement par lots. Changer les textures n'est généralement pas trop mauvais, si les deux textures comme en VRAM, mais en changeant constamment les variables de shader peuvent être lentes. – ssube

+0

Merci. Comment le moteur de jeu gère-t-il les matrices de transformation lors du traitement par lots (qui change par objet)? – jameszhao00

+0

Les matrices de transformation seront définies en tant que constantes de shader si nécessaire. Ce n'est pas un gros problème car une grande partie de la scène est généralement le monde. C'est statique et n'a pas besoin de transformation. Si c'est le cas: Transformez les données au moment du chargement avant de les charger dans le vertex-buffer. –

3