21 mar 2007

Si quieres que algo salga bien...

Al final no me ha quedado más remedio que pasar del SpriteBatch que incluye Xna.

Los motivos son tres:

* Quería usar shaders en los sprites. Aunque es posible usarlos con SpriteBatch, tan sólo si se aplican a la totalidad de la escena, lo cual no era suficiente.

* Quería usar animaciones mediante texturas con múltiples frames, lo que tampoco se soportaba directamente con SpriteBatch.

* Quería usar multitexturing, lo cual no se soporta con SpriteBatch.

Encontré algunos reemplazos a dicha clase, concretamente uno que resuelve el primer problema, y otro que resolvía el segundo. Pero no uno que lo tuviese todo, así que me ha tocado escribir uno casi desde cero.

El caso es que ya está hecho y funciona. Pero hay una cosa que no hace, y es lo de reordenar las cosas. En este momento se dibuja todo según llega, agrupando como le sea posible.

El rendimiento que da, por tanto, depende mucho del orden en que se le mande dibujar las cosas. Por ejemplo, dibujar dos grupos A y B seguidos, o entrelazados, causa una variación del 40% en el rendimiento final.

En fin, en las mismas condiciones el sistema da resultados mejores que las pruebas de ayer, pero como ya dije hay que tener cuidado con el orden. De momento así queda porque funciona, y permite Shaders con multitexturing.

Mañana intentaré juntar la lógica con los gráficos, para tener algo aceptable.

No hay comentarios: