2013-07-19 2 views
3

게임용 DirectX 11 오버레이를 쓰고 있습니다. 텍스처를 만드는 것은 매우 간단하며 C/C++에 대한 지식이 풍부합니다.DirectX 11 오버레이

문제는 내 테스트 창에서 텍스처를 인쇄 할 수 있지만 카메라 각도를 변경하자마자 텍스처가 함께 이동합니다. 그것이 바로 대부분의 사람들이 원하는 것입니다.

내가 알고 싶은 것은 카메라가 움직이든 아니든간에 화면에 항상 표시되도록 2D로 인쇄하려면 어떻게해야합니까?

+0

코드없이 무엇이 잘못되는지를 말하는 것은 불가능합니다. 한 가지 방법은 화면에 텍스쳐 사각형을 그리는 것입니다. 이것은 ortographic projection transform과 뷰 또는 월드 변환이 전혀 필요 없다는 것을 의미합니다. –

+0

나는 그것이 도움이된다고 생각한다. 나는 너에게 돌아가서 알릴 것이다. – user2600628

+0

전 세계 행렬을 사용할 수 없게되어 화면에 여전히 인쇄되지만 투영 행렬을 유일한 행렬로 남겨두기위한 뷰 행렬은 다른 것입니다. – user2600628

답변

1

기본적으로 dx11을 사용하므로 쉐이더를 사용하여 요소를 렌더링합니다.

표준 3 차원 객체는 일반적으로이 지침을 따릅니다. - 월드 (위치 객체), 뷰 (카메라 공간에서 변환), 투영 (스크린 공간에서 변환)의 3 가지 변환을 사용합니다.

버텍스 쉐이더에서는 3d를 2d로 변환하기 위해 그 모든 배수를 곱합니다.

2 차원 (카메라가 아닌)에 요소를 표시하는 것이므로보기/투영을 고려하지 않은 새 쉐이더를 쉽게 만들 수 있으므로 이러한 행렬을 사용하지 않아도됩니다 버텍스 쉐이더에서. (당신은 여전히 ​​2D 변환을 위해 세계를 사용할 수 있습니다).

픽셀 정확한 2d 요소가 필요한 경우 가장 쉬운 방법입니다. 빌보드 변형/쉐이더를 만들어야합니다. 기본적으로 렌더 타겟 해상도가 있고 표준 렌더링 공간은 -1 -> 1이므로 스케일/변환을 수정하여 두 공간 사이를 변환합니다.

오버레이를 렌더링 할 때 깊이를 완전히 비활성화해야합니다.

샘플이 필요한 경우 신속하게 알려 드리 겠지만 매우 간단해야합니다.

+0

나는 그것이 작동하도록했습니다. +15 점을 얻으면 나는 당신을 길렀다. 감사합니다. :) – user2600628