UWP(유니버설 Windows 플랫폼 게임 포팅)에 대한 질문과 대답입니다.
내 게임을 포팅하는 것은 API 메서드에 대한 검색 및 바꾸기 작업의 집합이 될 것입니까, 아니면 좀 더 신중한 포팅 프로세스를 계획해야 하나요?
Direct3D 11은 Direct3D 9에서 중요한 업그레이드입니다. 가상화된 그래픽 어댑터 및 해당 컨텍스트에 대한 별도의 API뿐만 아니라 디바이스 리소스에 대한 새로운 다형성 계층을 포함하여 몇 가지 패러다임 변화가 있습니다. 게임은 기본적으로 동일한 방식으로 그래픽 하드웨어를 사용할 수 있지만 새로운 Direct3D 11 API 아키텍처에 대해 알아보고 올바른 API 구성 요소를 사용하도록 그래픽 코드의 각 부분을 업데이트해야 합니다. 포팅 개념 및 고려 사항을 참조 하세요.
새 디바이스 컨텍스트는 무엇인가요? Direct3D 9 디바이스를 Direct3D 11 디바이스, 디바이스 컨텍스트 또는 둘 다로 교체해야 하나요?
이제 Direct3D 디바이스는 비디오 메모리에 리소스를 만드는 데 사용되고 디바이스 컨텍스트는 파이프라인 상태를 설정하고 렌더링 명령을 생성하는 데 사용됩니다. 자세한 내용은 Direct3D 9 이후 가장 중요한 변경 사항은 무엇인가요?
UWP용 게임 타이머를 업데이트해야 하나요?
QueryPerformanceCounter는 QueryPerformanceFrequency와 함께 여전히 UWP 앱에 대한 게임 타이머를 구현하기 가장 좋은 방법이며,
타이머와 UWP 앱 수명 주기의 뉘앙스를 알고 있어야 합니다. 게임이 마지막으로 플레이된 시점부터 스냅샷을 다시 시작하기 때문에 일시 중단/재개는 데스크톱 게임을 다시 시작하는 플레이어와 다릅니다. 많은 시간이 지난 경우(예: 몇 주) 일부 게임 타이머 구현이 정상적으로 작동하지 않을 수 있습니다. 앱 수명 주기 이벤트를 사용하여 게임이 다시 시작될 때 타이머를 다시 설정할 수 있습니다.
여전히 RDTSC 명령을 사용하는 게임은 업그레이드해야 합니다. 게임 타이밍 및 멀티 코어 프로세서를 참조 하세요.
내 게임 코드는 D3DX 및 DXUT를 기반으로합니다. 코드를 마이그레이션하는 데 도움이 되는 사용 가능한 항목이 있나요?
DirectXTK(DirectX 도구 키트) 커뮤니티 프로젝트는 Direct3D 11에서 사용할 도우미 클래스를 제공합니다.
데스크톱 및 Microsoft Store의 코드 경로를 유지 관리하는 방법은 무엇인가요?
Chuck Walbourn의 문서 시리즈 Dual-use Coding Techniques for Games(게임용 이중 용도 코딩 기술)에서는 데스크톱과 Microsoft Store 코드 경로 간의 코드 공유에 대한 참고 자료를 제공합니다.
DirectX UWP 앱에서 이미지 리소스를 로드할 어떻게 할까요? 있나요?
이미지를 로드하기 위한 두 가지 API 경로가 있습니다.
- 콘텐츠 파이프라인은 이미지를 Direct3D 텍스처 리소스로 사용되는 DDS 파일로 변환합니다. 게임 또는 앱에서 3차원 자산 사용을 참조하세요.
- Windows 이미징 구성 요소는 다양한 형식의 이미지를 로드하는 데 사용할 수 있으며 Direct2D 비트맵과 Direct3D 텍스처 리소스에 사용할 수 있습니다.
DirectXTK 또는 DirectXTex에서 DDSTextureLoader 및 WICTextureLoader를 사용할 수도 있습니다.
DirectX SDK 위치
DirectX SDK는 Windows SDK의 일부로 포함됩니다. Windows SDK와 분리된 가장 최근의 DirectX SDK는 2010년 6월이었습니다. Direct3D 샘플은 나머지 Windows 앱 샘플과 함께 코드 갤러리에 있습니다.
DirectX 재배포 가능 패키지는 어떻습니까?
Windows SDK의 대부분의 구성 요소는 이미 지원되는 OS 버전에 포함되어 있거나 DLL 구성 요소(예: DirectXMath)가 없습니다. UWP 앱에서 사용할 수 있는 모든 Direct3D API 구성 요소는 이미 게임에서 사용할 수 있습니다. 재배포할 필요가 없습니다.
Win32 데스크톱 애플리케이션은 여전히 DirectSetup을 사용하므로 게임의 데스크톱 버전도 업그레이드하는 경우 게임 개발자를 위한 Direct3D 11 배포를 참조 하세요.
효과에서 벗어나기 전에 데스크톱 코드를 DirectX 11로 업데이트할 수 있는 방법이 있나요?
Direct3D 11 업데이트에 대한 효과를 참조하세요. 효과 11은 레거시 DirectX SDK 헤더에 대한 종속성을 제거하는 데 도움이 됩니다. 포팅 보조로 사용하기 위한 것이며 데스크톱 앱에서만 사용할 수 있습니다.
DirectX 8 게임을 UWP로 포팅하는 경로가 있나요?
예:
DirectX 10 또는 11 게임을 UWP로 이식할 수 있나요?
DirectX 10.x 및 11 데스크톱 게임은 UWP로 이식하기 쉽습니다. Direct3D 11로 마이그레이션을 참조하세요.
다중 모니터 시스템에서 올바른 디스플레이 디바이스를 선택해야 어떻게 할까요??
사용자가 앱이 표시되는 모니터를 선택합니다. 첫 번째 매개 변수가 nullptr로 설정된 D3D11CreateDevice를 호출하여 Windows에서 올바른 어댑터를 제공하도록 합니다. 그런 다음 디바이스의 IDXGIDevice 인터페이스를 가져오고 GetAdapter를 호출하고 DXGI 어댑터를 사용하여 스왑 체인을 만듭니다.
앤티앨리어싱을 켜지 어떻게 할까요??
Direct3D 디바이스를 만들 때 앤티앨리어싱(다중 샘플링)이 활성화됩니다. CheckMultisampleQualityLevels를 호출하여 다중 샘플링 지원을 열거한 다음, CreateSurface를 호출할 때 DXGI_SAMPLE_DESC structure에서 다중 샘플링 옵션을 설정합니다.
내 게임은 다중 스레딩 및/또는 지연된 렌더링을 사용하여 렌더링됩니다. Direct3D 11에 대해 알아야 할 사항
시작하려면 Direct3D 11의 다중 스레딩 소개를 참조하세요. 주요 차이점 목록은 Direct3D 버전 간의 스레딩 차이점을 참조 하세요. 지연 렌더링은 즉각적인 컨텍스트 대신 디바이스 지연 컨텍스트를 사용합니다.
Direct3D 9 이후 프로그래밍 가능한 파이프라인에 대한 자세한 내용은 어디에서 확인할 수 있나요?
다음 항목을 방문하세요.
내 모델에 .x 파일 형식 대신 무엇을 사용해야 하나요?
.x 파일 형식에 대한 공식적인 대체 형식은 없지만 많은 샘플에서는 SDKMesh 형식을 사용합니다. Visual Studio에는 Visual Studio 3D 시작 키트의 코드로 로드하거나 DirectXTK를 사용하여 로드할 수 있는 CMO 파일로 인기 있는 여러 형식을 컴파일하는 콘텐츠 파이프라인도 있습니다.
셰이더를 디버그할 어떻게 할까요? 있나요?
Microsoft Visual Studio에는 DirectX 그래픽용 진단 도구가 포함되어 있습니다. DirectX 그래픽 디버깅을 참조 하세요.