OpenGL ES 2D – orderamiento z, buffer de profundidad vs dibujo en order

Soy completamente nuevo en OpenGL, así que lo siento si es una pregunta tonta. Tampoco tengo idea si marca la diferencia, por si acaso, estoy usando OpenGL ES 1.1.

Actualmente estoy dibujando sprites en order de textura, como he leído, es mejor para el performance (tiene sentido). Pero ahora me pregunto si ese fue el enfoque correcto porque necesito ciertos sprites para estar delante de los demás, independientemente de la textura.

Hasta donde yo sé, mis opciones para orderar z serían habilitar el búfer de profundidad y usar eso, o cambiar el order de dibujo para que los sprites se dibujen en el order del valor az.

He leído que el búfer de profundidad puede ser un éxito de performance, pero también cambiaría el order. ¿Qué debo hacer?

La respuesta corta es orderar los sprites.

Parece que estás creando algo realmente basado en 2D, y mientras que un z-buffer puede ser una herramienta muy útil, puede ser un golpe de performance impresionante si el hardware no lo admite y si no estás realmente usando Objetos 3D que pueden estar cruzándose entre sí, no tiene mucho sentido para mí.

Además, si tiene sprites parcialmente transparentes, es decir, tiene píxeles con un valor alfa que no es 0 o 255 (o 0.0 o 1.0 si usa un punto flotante), entonces tiene que orderar de todos modos.

Como nota al margen, creo que el performance perdido al cambiar "sprites" solo ocurre cuando se cambian las superficies, y solo raramente. Una forma de ayudar a mitigar este problema es poner tantos sprites diferentes en una image como sea posible, en una cuadrícula, y usar pequeños trozos de sus superficies como sprites.