Xbox360 및 WinXP 용 멀티 플랫폼 코드베이스를 유지 관리하고 있습니다. WinXP D3D9에 상응하는 기능이없는 Xbox360 버전의 D3DRS_VIEWPORTENABLE과 관련된 것으로 보이는 XP 측의 문제가 나타납니다. This article에는 흥미로운 아이디어가 있지만 단위 행렬을 구성하는 유일한 방법은 D3DVIEWPORT9 :: X 및 D3DVIEWPORT9 :: Height에 음수를 제공하는 것이지만 부호없는 숫자입니다. (어쨌든 음수를 넣으려고했지만 아무런 문제가 발생하지 않았습니다.)WinXP D3D9에서 Xbox360의 D3DRS_VIEWPORTENABLE은 무엇입니까?
그렇다면 WinXP/D3D9에서 D3DRS_VIEWPORTENABLE의 동작을 어떻게 에뮬레이트합니까?
(분명히하기 위해, 2 차원 화면 정렬 쿼드는 Xbox360에서 잘 작동하지만 WinXP에서 오프셋/늘입니다. 사실 (0, 0)은 화면 중앙에서 시작됩니다 뷰포트 변환을 적용한 결과 Xbox360에서와 같이 왼쪽 하단 모서리가 아닌 WinXP에 있음)
업데이트 :이 질문을 쓴 당시 Xbox360 devkit을 가지고 있지 않았지만, 한 번 샀다. D3DRS_VIEWPORTENABLE 상태를 사용할 수 없도록 설정했으며 WinXP 빌드에서와 동일한 방식으로 Xbox360에서 동일한 동작을 수행했습니다. 따라서 WinXP에서 D3DRS_VIEWPORTENABLE을 에뮬레이션하기위한 틈새를 막기위한 DirectX 마법이 있어야합니다.
제 경우에는 버텍스 쉐이더가 전체 행렬 "체인"을 사용하지 않고 있지만 실제로 버텍스 쉐이더의 실제 계산에 적용된 아이디어가 효과가있었습니다. (즉, 불가피 뷰포트 행렬과 결합되었을 때 뷰포트 행렬 계산을 뒤집어 효과적으로 식별 행렬 이었음) –
@Jim : 현상금 도움이 되었으면 좋겠다 :) 현상금의 기회? ;) – Goz
아, 아, 나는 자동적으로 대답을 수락했다고 생각했는데, 미안해. 이제 현상금 아이콘을 클릭했습니다. 아이콘이 여전히 있고 클릭 할 수있는 상태이므로 통과 여부는 확실하지 않습니다. 완료되지 않은 경우 다른 설명을 추가하십시오. (이것은 나의 첫 현상금에 기초한 질문입니다.) –