|
 | | |
|
| |  |   |  |  | |  |  | |  |  | |  |  | |  | |
 | | |
| 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 |
|
|
|  |  | | |
| 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 |
|
|
|  |  | | |
| 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?? |
|
|
|  |  | | |
| 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 |
|
|
|  |  | | |
| Re: Problemas com textura 2D e 3D juntas |
|
|
Funcionou perfeitamente, só restaurei os render states como você disse e já funcionou
Muito Obrigado mesmo |
|
|
|
|  |  | |  |  | |  |  | |  |
|
|
| | |
|
|
|  |
 |  |
|