게임개발/DirectX12

[DirectX12]#Part2 - Direct3D의 기초_기능 지원 점검

Hardii2 2021. 12. 28. 20:06

[DirectX12] #Part 2 - Direct 3D 기초

 

"DirectX12를 이용한 3D 게임 프로그래밍 입문" 서적의 Part 2, "Direct3D의 기초"에 해당하는 내용입니다. 

현재, 게임 개발에 입문하여 기초지식을 습득하여 기록하기 위함이며, 개념 이해와 예제코드 작성을 진행.

 

 


 

ID3D12Device::CheckFeatureSupport 메서드
HRESULT ID3D12Device::CheckFeatureSupport (
    D3D12_FEATURE Feature;
    void *pFeatureSupportData;
    UINT FeatureSupportDataSize
);

1. Feature: CheckFeatureSupport를 통해 지원 여부를 점검할 기능들의 종류

    (a) D3D12_FEATURE_D3D12_OPTIONS: Direct3D의 여러 기능들,
    (b) D3D12_FEATURE_FEATURE_LEVELS: 기능 수준들,
    (c) D3D12_FEATURE_ARCHITECTURE: 하드웨어 아키텍처 기능들,
    (d) D3D12_FEATURE_FORMAT_SUPPORT: 주어진 텍스처 형식에 대한 기능들
    (d) D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS: 다중표본화 기능

2. pFeatureSupportData: 기능 지원 정보가 설정될 구조체를 가리키는 포인터,
			매개변수 "Feature"로 받은 값, 즉 위 목록에서 보이는
                        지정한 값에 따라 달라집니다.

 

기능 지원 점검 예제
typedef struct D3D12_FEATURE_DATA_FEATURE_LEVELS {
    UINT			NumFeatureLevels;
    const D3D_FEATURE_LEVEL	*pFeatureLevelsRequested;
    D3D_FEATURE_LEVEL		*MaxSupportedFeatureLevel;
} D3D_FEATURE_DATE_FEAUTRE_LEVELS;


**************예제 코드**************

D3D_FEATURE_LEVEL featureLevels[3] = {
    	D3D_FEATURE_LEVEL_11_0,		// 11기능 지원 점검
	D3D_FEATURE_LEVEL_10_0,		// 10, 그리고 9까지 기능 지원을 점검까지
	D3D_FEATURE_LEVEL_9_0,		// 3가지 FEATURE_LEVEL들을 점검합니다. 
};

D3D12_FEATURE_DATA_FEATURE_LEVELS featureLevelsInfo;
featureLevelsInfo.NumFeatureLevels = 3;
featureLevelsInfo.pFeatureLevelsRequested = featureLevels // 포인터 정의 	

md3Device->CheckFeatureSupport(
    D3D12_FEATURE_FEATURE_LEVELS,
    &featureLevelsInfo,
    sizeof(featureLevelInfo));
)

"NumFeatureLevels"는 기능 지원을 점검할 항목들의 개수를 정하고, "*pFeatureLevelsRequested" 포인터는 기능 지원을 점검할 항목들을 담고 있는 D3D_FEATURE_LEVEL 형식의 배열을 가리킵니다. 마지막으로, CheckFeatureSupport 메서는 MaxSupportFeatureLevel 필드를 통해 지원되는 최대 기능 수준을 출력합니다. 

 

 ID3D12Device::CheckFeatureSupport 메서드를 통해 다양한 기능들의 지원 여부를 확인 할 수 있습니다.