Estaba pensando en cómo mejorar la clase SpriteBatch.
Esta clase lo que hace es dibujar toda la lista que hay entre el Begin y el End, ordenando por una série de parámetros, como la transparencia o la Z.
Sin embargo, si utilizas varios niveles de SpriteBatch, la clase falla, puesto que no se da cuenta de que otro spriteBatch te ha cambiado los states. Así si por ejemplo haces esto:
foreach(RenderTarget)
sBatch.Begin
....
foreach(...)
sBatch2.Begin
...
sBatch2.End
....
sBatch.End
No funciona bien. :(
Así que he pensado que lo único que habría que hacer es una clase SpriteBatch con 'memoria de states'. De esta forma no necesita Begin, no necesita End, sólo necesita un Render y listos.
Pero ahora XNA 4.0 lo cambia todo:
http://blogs.msdn.com/b/shawnhar/archive/2010/04/02/state-objects-in-xna-game-studio-4-0.aspx
Ahora se usará el sistema de DX10, que a mi no me gusta en absoluto >:(
Así que en 4.0 se necesitará utilizar una lista de states, comprobar si ya existe, si no existe, crearlo....
Para que el sistema sea óptimo se necesita una tabla Hash que identifique cada state...
¿Conocéis un sistema rápido y óptimo que cree un hash a partir de una estructura de varios int32?
Esta clase lo que hace es dibujar toda la lista que hay entre el Begin y el End, ordenando por una série de parámetros, como la transparencia o la Z.
Sin embargo, si utilizas varios niveles de SpriteBatch, la clase falla, puesto que no se da cuenta de que otro spriteBatch te ha cambiado los states. Así si por ejemplo haces esto:
foreach(RenderTarget)
sBatch.Begin
....
foreach(...)
sBatch2.Begin
...
sBatch2.End
....
sBatch.End
No funciona bien. :(
Así que he pensado que lo único que habría que hacer es una clase SpriteBatch con 'memoria de states'. De esta forma no necesita Begin, no necesita End, sólo necesita un Render y listos.
Pero ahora XNA 4.0 lo cambia todo:
http://blogs.msdn.com/b/shawnhar/archive/2010/04/02/state-objects-in-xna-game-studio-4-0.aspx
Ahora se usará el sistema de DX10, que a mi no me gusta en absoluto >:(
Así que en 4.0 se necesitará utilizar una lista de states, comprobar si ya existe, si no existe, crearlo....
Para que el sistema sea óptimo se necesita una tabla Hash que identifique cada state...
¿Conocéis un sistema rápido y óptimo que cree un hash a partir de una estructura de varios int32?