Fórum Sharpgames
 
 
  Forum  Criação de Jogo...  Gráficos 2D/3D  Problemas com textura 2D e 3D juntas
Anterior Anterior
 
Próximo Próximo
Nova Entrada 12/7/2008 17:46
Resolvido
  jkleber
26 tópicos
9th Level Poster


Problemas com textura 2D e 3D juntas 
Olá a todos, eu estou com um problema bem estranho em meu projeto, é o seguinte:eu carrego o modelo 3D na tela sem problema nenhum, mas quando eu tento escrever algo na tela usando o spriteBatch.DrawString o meu modelo 3D deforma por inteiro
 
Nova Entrada 12/7/2008 19:13
  lucianoJose
195 tópicos
Iniciante


Re: Problemas com textura 2D e 3D juntas 
 jkleber escreveu
Olá a todos, eu estou com um problema bem estranho em meu projeto, é o seguinte: eu carrego o modelo 3D na tela sem problema nenhum, mas quando eu tento escrever algo na tela usando o spriteBatch.DrawString o meu modelo 3D deforma por inteiro


Você tá utilizando um mesmo Graphics Device tanto para renderizar seus objetos 2D como para renderizar objetos 3D ? Se sim, é bom evitar isso!

Quando você faz esse bloco:

SpriteBatch.Begin(); 
... 
SpriteBatch.End();


Isso modifica varios "Render States"; dai os resultados visuais no seu ambiente 3D podem ser dos mais variados.

Então, tenta utilizar 1 Graphics Device para renderizar(SpriteBatch) objetos 2D e um outro para renderizar objetos 3D.

@lucianoJoseBr My Blog: http://lucjose.wordpress.com
 
Nova Entrada 14/7/2008 12:04
  jkleber
26 tópicos
9th Level Poster


Re: Problemas com textura 2D e 3D juntas 
Muito obrigado pela ajuda, eu entendi o problema só que não estou conseguindo resolve-lo

Quando eu instancio um novo Graphics Device, ocorre um erro :

"A graphics device manager is already registered.  The graphics device manager cannot be changed once it is set."

E outra coisa, mesmo que eu consiga criar um novo Graphics Device, como que eu irei diferenciar qual é para objetos 2D e 3D??
 
Nova Entrada 14/7/2008 22:14
  lucianoJose
195 tópicos
Iniciante


Re: Problemas com textura 2D e 3D juntas 

 jkleber escreveu
Muito obrigado pela ajuda, eu entendi o problema só que não estou conseguindo resolve-lo

Quando eu instancio um novo Graphics Device, ocorre um erro :

"A graphics device manager is already registered.  The graphics device manager cannot be changed once it is set."

E outra coisa, mesmo que eu consiga criar um novo Graphics Device, como que eu irei diferenciar qual é para objetos 2D e 3D??


Já que não funfou, tenta isso:

Após ter colocado um bloco SpriteBatch.Begin()/SpriteBatch.End() - restaura alguns render states antes renderizar qualquer objeto 3D: 

GraphicsDevice.RenderState.DepthBufferEnable = true;
GraphicsDevice.RenderState.AlphaBlendEnable = false; 
GraphicsDevice.RenderState.AlphaTestEnable = false;

Após ter adicionada essas 3 linhas acima, dai entao, renderiza teus objetos 3D e nos diz se voltou ao normal. Dependendo do conteudo 3D, tu ainda vai precisar adiconar estas 2 linhas antes de renderizar os objetos 3D:


GraphicsDevice.SamplerStates[0].AddressU = TextureAddressMode.Wrap; 
GraphicsDevice.SamplerStates[0].AddressV = TextureAddressMode.Wrap;

---

Uma segunda opção que você tem é: Ao chamar o método Begin do SpriteBatch, salvar o Estado, explicitando lá na lista de parametros do método Begin o valor SaveStateMode.SaveState. 

Um exemplo:

this.spriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Immediate, SaveStateMode.SaveState);


Tenta essas 2 formas por favor, e nos avisa no que deu.

Abraços

@lucianoJoseBr My Blog: http://lucjose.wordpress.com
 
Nova Entrada 15/7/2008 11:47
  jkleber
26 tópicos
9th Level Poster


Re: Problemas com textura 2D e 3D juntas 
Funcionou perfeitamente, só restaurei os render states como você disse e já funcionou

Muito Obrigado mesmo
 
Anterior Anterior
 
Próximo Próximo
  Forum  Criação de Jogo...  Gráficos 2D/3D  Problemas com textura 2D e 3D juntas
Logos do XBox 360, XNA e Games For Windows
Copyright 2006-2012 por SharpgamesPolítica de Privacidade  |  Termos de Uso