Fórum Sharpgames
 
 
  Forum  Criação de Jogo...  Gráficos 2D/3D  Usar mais de 1 SpriteBatch
Anterior Anterior
 
Próximo Próximo
Nova Entrada 17/3/2009 23:01
  lbmaker
12 tópicos
10th Level Poster


Usar mais de 1 SpriteBatch 
Gostaria de saber se é possivel usar mais de 1 SpriteBatch, o problema é o seguinte, durante o processod e draw do meu game, terão varios sprites e poderá haver sprites com diferentes "SpriteBlendMode" por exemplo uma chama, fica com efeito legau com o SpriteBlendMode.Additive, o fundo pode ser com SpriteBlendMode.None pois nao usa nenhum efeito "Alpha-Blend", já os demais sprites usa-se o SpriteBlendMode.AlphaBlend, dai vem a dúvida, seria bom eu usar 3 SpriteBatch diferentes, 1 para cada situação ou teria outra forma de contornar este problema.

Até mais...
 
Nova Entrada 18/3/2009 13:57
  setherK
85 tópicos
3rd Level Poster


Re: Usar mais de 1 SpriteBatch 
Eu não tenho experiencia em usar m monte de spritesBatchs.

Mas eu usaria um só. Já que o SpriteblendMode se define no spritBatch.Begin(blabla);

Então, é só trocar na hora. Tipo:

SpriteBatch.Begin(SpriteBlendMode.Additive);

spriteBatch.Draw( BLABAL);

spriteBatch.End();

SpriteBatch.Begin(SpriteBlendMode.None);

spriteBatch.Draw( BLABAL);

spriteBatch.End();

SpriteBatch.Begin(SpriteBlendMode.AlphaBlend);

spriteBatch.Draw( BLABAL);

spriteBatch.End();

Entendeu?

FLW E VLW!

Meu site com Video-Aulas de Tutoriais: www.devtuts.com.br
 
Nova Entrada 19/3/2009 13:16
  lbmaker
12 tópicos
10th Level Poster


Re: Usar mais de 1 SpriteBatch 
O problema é o seguinte, se eu tiver por exemplo 20 sprites pra desenhar na tela, eu vou construir uma array de sprites colocando eles ja na ordem de desenho para simular as "camadas" e agilizar o processo tambem, sendo assim terão vários tipos de draw auternados, sendo inviável dar SpriteBatch.Begin e spriteBatch.End a cada sprite, axo mais facil criar os 3 spriteBatch e no inicio do draw iniciar os 3 e finalizar os 3 ao final:

SpriteBatch1.Begin(SpriteBlendMode.Additive);
SpriteBatch2.Begin(SpriteBlendMode.None);
SpriteBatch3.Begin(SpriteBlendMode.AlphaBlend);

// Rotinas de draw

SpriteBatch1.End();
SpriteBatch2..End();
SpriteBatch3..End();
 
Nova Entrada 19/3/2009 13:54
  setherK
85 tópicos
3rd Level Poster


Re: Usar mais de 1 SpriteBatch 
Oras, faça uma lista de sprites com trasparencia e outra de aditive.

Ai mete um foreach em cada uma num gameComponent ^^

FLW E VLW!

Meu site com Video-Aulas de Tutoriais: www.devtuts.com.br
 
Nova Entrada 19/3/2009 14:20
  lbmaker
12 tópicos
10th Level Poster


Re: Usar mais de 1 SpriteBatch 
Bem, gostaria de deixar claro que nao estou defendendo minha "teoria" mais é que ainda a vejo como a mais viável.

Não entendi sua colocação quanto a "Ai mete um foreach em cada uma num gameComponent ^^" como estou iniciando no XNA nao entendi a expressão, mais minha dúvida é a seguinte, mesmo que eu as separe em grupos, terei mesmo assim que fazer SpriteBatch.Begin e SpriteBatch.End 3 vezes, esntão não vejo o porque de não usar 3 componentes diferentes, eu sei que economizaria 2 variaveis SpriteBatch (não sei se ele consome muita memoria), mais pouparia muito o trabalho de ter que diferenciar listas de sprites, e mais cuidados como o que você descreveu.

Até mais e valew..
 
Anterior Anterior
 
Próximo Próximo
  Forum  Criação de Jogo...  Gráficos 2D/3D  Usar mais de 1 SpriteBatch
Logos do XBox 360, XNA e Games For Windows
Copyright 2006-2012 por SharpgamesPolítica de Privacidade  |  Termos de Uso