Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Como mejorar el dibujado de sprites

Iniciado por XÑA, 04 de Septiembre de 2010, 08:16:12 PM

« anterior - próximo »

XÑA

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?

blau

Quitando el modo inmediate,
en los demas modos se pinta cuando haces el spriteBatch.End(),
me imagino que es ahi donde puedes cambiar los rendersates, aunque no lo he probado.


Vicente

Calcular códigos hash "bien" es muy complicado, lo más posible es que la líes y no sea suficientemente único :S






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.