directx 예제

CPU 스레드가 GPU 큐에서 리소스에 쓰는 명령 실행이 완료될 때까지 기다렸다가 다시 사용해야 할 수 있습니다. 예를 들어 스왑 체인의 백 버퍼 리소스를 다시 사용하기 전에 해당 리소스를 렌더 대상으로 사용하는 모든 명령을 완료해야 해당 백 버퍼 리소스를 다시 사용할 수 있습니다. 쓰기 가능한 대상(예: 재료 텍스처)으로 사용되지 않는 리소스는 이중 버퍼링할 필요가 없으며 샤더에서 읽기 전용 리소스로 다시 사용되기 전에 CPU 스레드를 실속시킬 필요가 없습니다. 렌더 대상과 같은 쓰기 가능한 리소스는 동시에 여러 큐에서 리소스가 수정되지 않도록 리소스를 보호하기 위해 동기화해야 합니다. 설명자 힙은 리소스 보기의 배열로 간주될 수 있습니다. DirectX 12를 참조하여 리소스 뷰를 만들기 전에(예: RTV 렌더링 대상 뷰), SRV(SRV), UAV(정렬되지 않은 액세스 뷰) 또는 상수 버퍼 뷰(CBV))를 생성하기 전에 설명자 힙을 만들어야 합니다. 특정 유형의 리소스 뷰(설명자)는 동일한 힙에서 만들 수 있습니다. 예를 들어 CBV, SRV 및 UAV는 동일한 힙에 저장할 수 있지만 RTV 및 샘플러 뷰에는 각각 별도의 설명자 힙이 필요합니다. 설명자 힙은 렌더링 파이프라인에 바인딩텍스처를 다루는 또 다른 단원에서 자세히 설명합니다. 지금은 스왑 체인 버퍼에 대한 렌더 대상 뷰를 저장하기 위해 설명자 힙이 만들어집니다. g_UseWarp 변수는 소프트웨어 래스터라이저(Windows 고급 래스터화 플랫폼 – WARP)를 사용할지 여부를 제어합니다.

소프트웨어 래스터라이저를 사용하면 그래픽 프로그래머가 하드웨어에서 사용할 수 없는 고급 렌더링 기능의 전체 집합에 액세스할 수 있습니다(예: 이전 GPU에서 실행중). WARP 장치는 공급 업체제공 디스플레이 드라이버의 품질에 문제가있는 경우 렌더링 기술의 결과를 확인하는 데 사용할 수 있습니다. 이 함수를 확장하여 추가 명령줄 인수(예: 전체 화면 모드에서 응용 프로그램 시작을 지정)를 처리할 수 있습니다. 예를 들어 광범위하게 배포된 게임을 가지고 있고 업그레이드하려고 한다고 가정해 보겠습니다. 글쎄, 게임을 구입한 모든 단일 사용자에게 새 복사본을 추적하고 배송하는 대신 “업그레이드! 바로 여기!”. 업데이트된 COM 개체를 다운로드하고 새 개체가 더 이상 번거로움 없이 프로그램에 바로 연결됩니다. 좋은, 응? WM_SYSKEYDOWN 메시지는 Alt 키가 다른 키 조합(예: Alt+Enter)을 누를 때 창 프로시저 함수로 전송됩니다. WM_KEYDOWN 메시지는 시스템 이외의 키를 누를 때 전송됩니다(Alt를 누르지 않고 키를 누름). 2006년 11월, DirectX 10은 세이더 모델 4.0이 세이더 모델 3.0과 후진적 호환성을 제공하지만 세이더 모델 1.0[10]을 더 이상 사용되지 않는다는 것을 특징으로 합니다. 면도기 모델 4.0은 샤더 명령 한계를 해제하고 프로그래밍 가능한 면도기 파이프라인에 형상 면도기 프로파일을 추가했습니다.

지오메트리 샤이더를 사용하면 그래픽 프로그래머가 단순한 프리미티브에서 새로운 기하학적 원형을 만들 수 있습니다(예: 단일 점을 지오메트리 샤더에 입력하고 삼각형 세트를 생성). DirectX 11은 2009년 10월에 출시되어 샤더 모델 5.0[7]을 출시했습니다. 세이더 모델 5.0은 컴퓨터 세이더뿐만 아니라 테셀레이션 세이더에 대한 지원을 추가했습니다. 테셀레이션 세이더는 베지어 표면의 제어점에서 삼각형 원형을 계산하여 모델의 세부 수준을 동적으로 구체화하는 기능을 제공합니다(예: 테셀레이션 기법도 테셀레이션에 구현할 수 있습니다). (그늘)을 참조하십시오. 컴퓨트 세이더를 사용하면 그래픽 프로그래머가 GPU(그래픽 처리 장치)의 대규모 병렬 처리 기능을 활용하는 범용 프로그램을 만들 수 있습니다. 플러시 기능은 CPU 스레드가 처리를 계속하기 전에 GPU에서 이전에 실행된 모든 명령이 실행이 완료되었는지 확인하는 데 사용됩니다. 이 기능은 GPU에서 현재 “사용 중” 명령에서 참조되는 백 버퍼 리소스가 크기를 조정하기 전에 실행이 완료되도록 하는 데 유용합니다.