2012-04-01 2 views
1

질감 투명성에 약간의 문제가있어, 나중에 도울 수 있기를 바랍니다.질감 투명도

세부 : 내가 코드에 의해 투명하게 무엇을 4.0

  • 텍스처 소스가 BMP입니다

    • XNA : 나는 3D 물건을 그리기 시작하기 전에 나는 다음을 사용

      public void Feketealapú(string Azonosító) 
      { 
          //textúra megállapítása 
          Texture2D Textúra = Textúrák[TextúraSzáma(Azonosító)]; 
      
          //adatok lekérése 
          Color[] buffer = new Color[Textúra.Width * Textúra.Height]; 
          Textúra.GetData<Color>(buffer); 
      
          //adatok módosítása 
          for (int i = 0; i < buffer.Length; i++) 
          { 
          Color szín = buffer[i]; 
          szín.A = ((byte)((szín.R + szín.B + szín.G)/3)); 
          buffer[i] = szín; 
          } 
      
          //adatok visszaírása 
          Textúra.SetData<Color>(buffer); 
      } 
      
    • :

      public void Rajzolj() 
      { 
          GStatic.Játék.GrafikaiCsatorna.BlendState = BlendState.AlphaBlend; 
          GStatic.Játék.GrafikaiCsatorna.DepthStencilState = DepthStencilState.Default; 
          GStatic.Játék.GrafikaiCsatorna.RasterizerState = RasterizerState.CullCounterClockwise; 
          GStatic.Játék.GrafikaiCsatorna.SamplerStates[0] = SamplerState.LinearWrap; 
      

      .. 등.

    • BlendState.Opaque를 사용하면 투명 텍스처가 없습니다.

    • 나는 다음과 같은 문제로 얻을 : http://youtu.be/ZiPzyk7AWu8

    • 편집 : 문제에 대한 비트 자세한 내용은 다음과 같습니다 문제는 화재 효과를 시뮬레이션 무엇을, 투명 텍스처입니다. 화재는 이러한 투명한 질감으로 여러 직사각형에서 발생합니다. 어떤 각도에서 불이 보이면 투명 텍스처를 통해 또 다른 불 효과의 사각형을보아야합니다. 투명도도 마찬가지입니다. 문제는 대신이 모델의 바닥 텍스처가 인 것을 볼 수 있습니다.

    누군가 나를 도와 줄 수 있습니까? 사전에

    감사 : 페테르

  • +1

    4 개의 쿼드 대신 제한된 광고판을 사용 해본 적이 있습니까? 더 적은 정점 및 코드로이 문제를 해결할 수 있습니다. –

    +0

    +1 정말로 좋은 생각입니다.하지만 나는 아직 원하지 않습니다. –

    답변

    1

    내가 투명성 문제라고 생각하지 않습니다 신경 쓰지 마십시오. Z-Buffer의 첫 번째 일은 그 무엇일까요?

    http://blogs.msdn.com/b/shawnhar/archive/2009/02/18/depth-sorting-alpha-blended-objects.aspx

    그 장면을 주문하고 DepthBuffer를 조작하는 최선의 방법을 지정하는 곳 인 가장 수입 부분입니다.

    사실
  • -
    1. 설정 DepthBufferEnable 및 DepthBufferWriteEnable
    2. 휴가 DepthBufferEnable이 true로 설정된 모든 불투명 형상을 그리기하지만, 카메라의 거리에 의해 거짓
    3. 정렬 알파 혼합 된 객체에 DepthBufferWriteEnable 변경에 그들을 잡아 앞뒤로 주문
  • +0

    나를 위해 일하지 않았지만 고마워. (또한 색상이 검은 색이면 0으로 나눈 값이 있습니다.) 반투명을 적용하기 위해 새로운 색상 (szín.R, szín.G, szín.B, 0.5f)을 만들려고했으나 여전히 문제가 있습니다. 대신 투명 효과를 통해 다른 화재 효과 (텍스처)를 적용 할 수 있습니다. –

    +1

    나는 비디오를 다시 보았고 투명성이 문제라고 생각하지 않는다. 내 변경된 의견을 반영하도록 게시물을 다시 작성했습니다. – ClassicThunder

    +0

    대단히 감사합니다. 물건을 수리 할 수있었습니다. –

    0

    이것은 투명성 문제 또는 해결할 수있는 주문 문제가 아닙니다.

    레이아웃의 성격에 따라 서로 겹치는 4 개의 쿼드가 모두 있으므로 각 쿼드는 동시에 다른 쿼드의 앞뒤에 있어야합니다.

    따라서 드로잉 순서를 설정하면 쿼드 B의 절반을 그려야하고 쿼드 A의 다른 절반은 쿼드 B 다음에 그려야하기 때문에 그리 도움이되지 않습니다.

    중간에 모두 만나서 카메라에서 정렬/그려서 8 개의 쿼드로 나누면 조금 더 좋아질 수 있습니다. 그러나이 길로 가면 3 쿼드로 충분합니다.

    +0

    위의 아이디어가 매력처럼 작동했기 때문에 저는 운이 좋았습니다. 그래서 모델을 변경할 필요가 없었습니다. 내가 한 것은 투명도로 그릴 데이터를 모으는 것이고 나머지는 불투명하게 그리는 것입니다. 그런 다음이 모든 작업을 마친 후 투명 재료를 알파로 그립니다. dephtbufferenable 및 writeenable 물건. 편집 : 지금까지 작업을 정렬 할 필요가 없었으며 운이 좋았지 만 필요하지는 않았습니다. –