2011-08-31 2 views
2

Je déteste vraiment demander ce qui ressemble à une question complètement stupide, mais mon manque de formation formelle m'a conduit à jeter cette question tout de suite. J'arrive au point dans le projet de jeu actuel où le rendu de la zone/niveau de jeu principal approche et il y a quelque chose dont je ne suis pas certain, essentiellement avec des soucis de combien est réellement vu par rapport à combien jeter dans les commandes de tirage.OpenGL, combien tirer en même temps?

Ce n'est peut-être pas ce qui sera fait, mais dans le but de l'expliquer d'une manière plus simple, je vais poser ces exemples. J'utilise actuellement OpenGL ES 1.1. Disons que j'ai un personnage et que la vue est à la 3ème personne, proche du personnage. J'ai un grand niveau avec des chambres, etc. Dois-je:

  1. Throw niveau entier dans les commandes de dessin et d'assumer les tampons de découpage et de profondeur font le travail de coupe ce qui ne se voit pas/rendu à l'écran?

  2. Briser la zone, dessiner seulement des sections qui pourraient être vu?

  3. Quelque chose d'autre est plus efficace?

Répondre

3

Si vous faites un environnement restreint, comme ce qui est commun dans les jeux FPS, puis la recherche Portail Occlusion.

C'est un sujet populaire, et des livres tels que 3D Math Primer for Graphics and Game Development et Real-Time Rendering ont de bons aperçus de la technique. D'autres textes peuvent fournir des lectures plus détaillées/approfondies sur le sujet.

Les arbres BSP pourraient également être utiles dans ce type de configuration.

Si vous créez un monde large et ouvert similaire à celui des RPG, examinez les arborescences Quad/Oct.

1

Cela dépend de la façon dont votre pilote peut optimiser le rendu. Vous devrez essayer et mesurer la performance.

Si les performances ne sont pas assez bon, voici quelques conseils:

  • Couper le jeu entier dans des zones qui ne peuvent éventuellement se voir (si vous avez une zone située sous le sol, là-bas est pas moyen de voir la surface, donc vous pouvez couper cela). Vous avez juste besoin d'un moyen de garder les zones de transition (rampe vers la zone souterraine) en synchronisation dans les deux zones.

  • La plupart des pilotes ignorent assez bien les pièces derrière le lecteur en utilisant octrees. Si cela ne fonctionne pas pour vous, créez votre propre octree pour optimiser le modèle que vous transmettez au rendu.

  • La géométrie ne pose souvent aucun problème, la texturation coûte du temps (beaucoup de lectures en mémoire). De nombreux pilotes permettent d'utiliser des textures avec différentes résolutions (mipmapping) pour accélérer le processus.

2

Idéalement, vous ne devez envoyer au GPU que des sommets visibles. Autrement, vous allez perdre la performance. D'un autre côté, essayer de faire un abattage parfait peut nécessiter trop de cycles de CPU. Vous devrez casser la zone dans quelques pièces et essayer de dessiner seulement ce qui peut être vu. Si possible, essayez d'être aussi précis que possible mais ne passez pas trop de temps sur la CPU non plus.

Toujours profil et vérifier :)

Questions connexes