2009-12-05 8 views
0

Je me demandais s'il existait un moyen de rendre un rendu de pavé de quad (rendu avec des changements de page de texture) et de les rendre dans l'ordre z (ou inverse).Ordre GL ES - Z ouvert lors du rendu de sprites 2D

Note Je ne veux pas de ZBuffer, je veux juste que les quads soient rendus dans l'ordre de zDepth.

Maintenant, je sais que les gens diront juste de les rendre dans l'ordre, et bien je les rend groupés par page de texture. Cependant, comme vous pouvez l'imaginer, il existe des cas où les sprites d'une page de texture doivent apparaître devant une autre. Lorsque vous affichez uniquement sur un tri de page de texture, cela provoque un problème.

Alors je me demandais si j'attribuais les quads à un ordre z qu'OpenGL ES respecterait-il?

Toute aide reçue avec plaisir.

Vive Rich

Répondre

0

Vous ne pouvez pas réaliser ce que vous voulez sans Z tampon/tampon de profondeur .. Ce que vous demandez est le travail du tampon de profondeur fait sans l'activer !!

Lorsque le tampon Z est activé, à chaque fois qu'OpenGL dessine un pixel, il vérifie les pixels de la valeur Z existante et décide ensuite de la dessiner ou non.

Lorsque Depth Buffer n'est pas activé, il est simplement écrasé quelle que soit la valeur z du pixel existant précédent.

0

oui, vous pouvez certainement le faire, aussi longtemps que vous

glEnable(GL_DEPTH_TEST); 

et, bien sûr, obtenir un tas d'autres choses. (Assurez-vous de créer un tampon de profondeur, utilisez les valeurs z qui sont dans la plage de votre vue tronc ...)

+0

Il parle de l'ordre des tirages, pas qu'ils respectent le tampon Z. Ce qu'il demande est généralement d'avoir des particules qui se mélangent correctement (et nécessite l'ordre inverse) – Bahbar

+0

Je pense qu'il veut z commander mais il ne veut pas trier son code de dessin dans l'ordre z parce qu'il se regroupe par texture pour la performance. –

0

OpenGL ES ne le fera pas pour vous. Il respectera l'ordre que vous spécifiez, c'est-à-dire l'ordre dans lequel les quads proviennent de l'appel de tirage. Si vous voulez que vos quads soient triés par Z, vous devrez les trier vous-même avant de les envoyer à OpenGL ES.

Si vous utilisez un tampon d'index, vous pouvez évidemment trier uniquement les indices. Mais vous devez encore calculer le Z réel vous-même. Edit: Concernant votre problème de texture, je dois ajouter que pour utiliser différentes textures en même temps, vous devriez utiliser des atlas de texture (c'est-à-dire, une seule texture qui contient les différentes textures que vous voulez utiliser dans différentes parties).