2010-04-10 7 views
1

저는 XNA를 사용하고 있는데 약간의 문제가 있습니다. 서로 다른 z 순서를 가진 다중 레이어를 지원해야합니다 (저는이 "뷰포트"라고 부릅니다). 그림은, 그래서 여기에 천 개 단어 가치가 같아야 작업은 다음과 같습니다XNA에서 여러 레이어 렌더링하기

http://www.charlesstrahan.com/so_files/viewports.png

여기에서 주목해야 할 몇 가지가 있습니다. 스프라이트는 스프라이트 B에서 볼 수 있듯이 뷰포트 외부로 렌더링되지 않습니다. 또한 뷰포트가 어떻게 렌더링되는지주의하십시오. 이는 Photoshop의 "레이어"와 매우 유사합니다. Sprite C의 z 순서는 -1000이지만 C의 뷰포트의 z 순서는 A의 뷰포트의 z 순서보다 크기 때문에 C는 여전히 Sprite A 위에 렌더링합니다.

내가 위의 그림에서 잘 표시 할 수없는 마지막 세부 사항이 있습니다. 각 뷰포트는 선택적으로 화면의 해당 영역에 색상을 렌더링해야합니다. 즉, "색조"효과로 생각할 수 있습니다.

XNA에서 가장 좋은 방법을 생각하면 완전히 망가졌습니다. 따라서 실제로이를 보여주는 C#/VB.NET 코드의 간단한 스 니펫을 사용할 수 있습니다. 어떤 도움이라도 대단히 감사하겠습니다.

답변

1

RenderTargets :-)로 쉽게 할 수 있습니다. 웹 (example)에서 사용하는 방법에 대한 많은 리소스가 있습니다.

yoru 프로젝트를 방금 시작한 경우 Windows Phone SDK를 통해 XNA 4.0을 설치하는 것이 좋습니다. Shawn Hargreaves가 최근에 쓴 기사에서 새 버전에서는 훨씬 쉬워졌습니다. RenderTarget changes in XNA Game Studio 4.0.

List<Texture2D> textures = new List<Texture2D>(); 

for (int i = 0; i < 100; i++) 
{ 
    RenderTarget2D rt = new RenderTarget2D(...); 

    GraphicsDevice.SetRenderTarget(rt); 
    DrawCharacterAnimationFrame(i); 
    GraphicsDevice.SetRenderTarget(null); 

    textures.Add(rt); 
} 

그리고 각 당신이 원하는 색상으로 렌더 타겟을 렌더링하기 위해 갈 때 그냥 Clear 메서드를 호출 할 수 있기 때문에 당신에 대해 묻고 있었다 "색조"기능이 쉽게 뇌사입니다.

0

당신은 다음 그룹으로 개체를 정렬

device.ClipPlanes[0].Plane = plane; 
device.ClipPlanes[0].IsEnabled = true; 
패스 위해 각 그룹을 렌더링 할 수
관련 문제