2011-12-20 5 views
2

문제가 있습니다. XNA 4.0에서 모델을 렌더링하려고 할 때 텍스처의 일부 위치가 trasparent입니다. 텍스처 자체에 문제가 있습니까? 아니면 잘못된 것을하고 있습니까? 모델과 텍스처는 블렌더에서 내보내집니다. 컬러 키를 사용하지 않거나 사전에 알파를 사용하려고했지만 거기에는 행운이 없었습니다.XNA 4.0 모델 텍스처 문제

스크린 샷 : 여기

http://i43.tinypic.com/2evg56u.jpg

내 그리기 방법은 다음과 같습니다

protected override void Draw(GameTime gameTime) 
    { 
     GraphicsDevice.Clear(ClearOptions.Target | ClearOptions.DepthBuffer, Color.CornflowerBlue, 1.0f, 0); 

     DrawModel(model, position); 

     spriteBatch.Begin(); 
     spriteBatch.DrawString(font, "Camera\nX = " + cameraPosition.X.ToString() + 
            "\nY = " + cameraPosition.Y.ToString() + 
            "\nZ = " + cameraPosition.Z.ToString(), new Vector2(10, 10), Color.White); 
     spriteBatch.DrawString(font, "Look at\nX = " + cameraLookAt.X.ToString() + 
            "\nY = " + cameraLookAt.Y.ToString() + 
            "\nZ = " + cameraLookAt.Z.ToString(), new Vector2(10, 150), Color.White); 
     spriteBatch.End(); 

     base.Draw(gameTime); 
    } 

    void DrawModel(Model model, Vector3 position) 
    { 
     foreach (ModelMesh mesh in model.Meshes) 
     { 
      foreach (BasicEffect effect in mesh.Effects) 
      { 
       effect.EnableDefaultLighting(); 
       effect.SpecularColor = new Vector3(0.25f); 
       effect.SpecularPower = 16; 

       effect.World = Matrix.CreateTranslation(position); 
       effect.Projection = projection; 
       effect.View = view; 
      } 

      mesh.Draw(); 
     } 
    } 
+0

깊이 버퍼를 활성화 했습니까? CullMode 상태를 고려 했습니까? – Blau

+0

답장을 보내 주셔서 감사합니다. 나는 CullMode를 시도했지만 도움이되지 않아서 깊이 버퍼가 기본적으로 활성화되어야한다고 생각합니다. 그러나 Neil Knigh의 대답이 내 문제를 해결했습니다. – benderto

답변

0

가 확인하여 SpriteBatch 객체가 호출 된 후 변경됩니다이 같은 DepthStencilState. SpriteBatch.End() 호출 후 Default을 재설정해야 할 수 있습니다.

+0

감사합니다. 내 문제가 해결되었습니다. :)'SpriteBatch'가 호출 될 때'DepthStencilState'가 변경된다는 것을 몰랐습니다. – benderto