> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# D3D12_STATE_OBJECT_FLAGS

> 상태 객체에 대한 제약을 지정합니다. 이 열거형의 값을 D3D12_STATE_OBJECT_CONFIG 구조체에서 사용합니다.

상태 객체에 대한 제약을 지정합니다. 이 열거형의 값을 [D3D12\_STATE\_OBJECT\_CONFIG](/reference/graphics/d3d12/structs/d3d12_state_object_config_public) 구조체에서 사용합니다.

## 구문

```cpp theme={null}
typedef enum D3D12_STATE_OBJECT_FLAGS
{
    D3D12_STATE_OBJECT_FLAG_NONE = 0,
    D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 1,
    D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 2
} D3D12_STATE_OBJECT_FLAGS
```

## 상수

| 상수                                                                                | 설명                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| --------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| D3D12\_STATE\_OBJECT\_FLAG\_NONE                                                  | 상태 객체 제약이 없습니다.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| D3D12\_STATE\_OBJECT\_FLAG\_ALLOW\_LOCAL\_DEPENDENCIES\_ON\_EXTERNAL\_DEFINITIONS | 이 플래그는 collection 유형의 상태 객체에만 적용됩니다. 그렇지 않은 경우 이 플래그는 무시됩니다. 이 컬렉션의 익스포트는 해결되지 않은 참조(종속성)를 가질 수 있으며, 이는 해당 컬렉션이 레이트레이싱 파이프라인 상태 객체(RTPSO)와 같은 컨테이너 상태 객체에 포함될 때 해결(정의)되어야 합니다. 여기에는 외부 서브객체(예: 루트 시그니처)를 로컬 익스포트에 연결하기 위해 외부에서 정의된 서브객체 연결에 의존하는 것도 포함됩니다. 이 플래그가 없으면 이 컬렉션의 모든 익스포트는 필요한 서브객체 연결이 로컬로 정의되는 등, 종속성이 로컬에서 완전히 해결되어야 합니다. 고급 구현/드라이버는 컬렉션의 코드를 컴파일하기에 충분한 정보를 갖게 되며, (**D3D12\_STATE\_OBJECT\_FLAG\_ALLOW\_EXTERNAL\_DEPENDENCIES\_ON\_LOCAL\_DEFINITIONS** 플래그가 설정되지 않는 한) 컴파일되지 않은 코드를 유지할 필요가 없어, 컬렉션이 컨테이너 상태 객체(예: RTPSO)에서 사용될 때 드라이버가 수행해야 할 작업은 최소화되며 이상적으로는 "저비용" 링크에 그치게 됩니다.                                                                                                                                                                                                                                                          |
| D3D12\_STATE\_OBJECT\_FLAG\_ALLOW\_EXTERNAL\_DEPENDENCIES\_ON\_LOCAL\_DEFINITIONS | 이 플래그는 collection 유형의 상태 객체에만 적용됩니다. 그렇지 않은 경우 이 플래그는 무시됩니다. 이 컬렉션이 다른 상태 객체(예: RTPSO)에 포함되면, 컨테이너 상태 객체의 나머지 부분에 있는 셰이더/함수가 이 컬렉션의 익스포트에 의존(예: 호출)할 수 있습니다. 이 플래그가 없으면(기본값) 이 컬렉션의 익스포트는 컨테이너 상태 객체(예: RTPSO)의 다른 부분에서 직접 참조할 수 없습니다. 이는 드라이버가 외부 함수가 호출되어 모든 코드가 함께 컴파일될 가능성을 대비해 컴파일되지 않은 코드를 컬렉션에 보관할 필요가 없어지므로, 컬렉션의 메모리 공간을 약간 줄일 수 있습니다. 다만, 이 컬렉션의 코드에 대해 필요한 모든 서브객체 연결이 로컬에서 정의되지 않은 경우, 드라이버가 아직 셰이더 코드를 컴파일할 수 없어 컴파일되지 않은 코드를 계속 보관해야 할 수도 있습니다. 외부 서브객체를 로컬 익스포트에 연결하는 외부에서 정의된 서브객체 연결은 로컬 정의에 대한 외부 종속성으로 간주되지 않으므로, 이 플래그의 존재 여부는 해당 연결이 허용되는지 여부에 영향을 미치지 않습니다. 반면, 현재 컬렉션이 로컬로 정의된 서브객체와 외부 익스포트(예: 셰이더) 간의 서브객체 연결을 정의하는 경우, 이는 로컬 정의에 대한 외부 종속성으로 간주되며 이 플래그가 설정되어야 합니다. 이 플래그의 존재 여부와 관계없이, 컬렉션의 셰이더 진입점(예: hit group 또는 miss 셰이더)은 컨테이너 상태 객체(예: RTPSO)에서 익스포트하는 경우 진입점으로 표시됩니다. RTPSO의 경우, 익스포트된 진입점은 레이트레이싱을 위한 셰이더 테이블에서 사용될 수 있습니다. |

## 요구 사항

**헤더:** d3d12\_xs.h 또는 d3d12\_x.h\
**라이브러리:** d3d12\_xs.lib 또는 d3d12\_x.lib\
**지원 플랫폼**: XBOX Series 콘솔 및 XBOX One 제품군


## Related topics

- [D3D12_STATE_OBJECT_CONFIG](/ko/reference/graphics/d3d12/structs/d3d12_state_object_config_public.md)
- [D3D12_STATE_OBJECT_TYPE](/ko/reference/graphics/d3d12/enums/d3d12_state_object_type_public.md)
- [D3D12_STATE_OBJECT_DESC](/ko/reference/graphics/d3d12/structs/d3d12_state_object_desc_public.md)
- [D3D12_STATE_SUBOBJECT](/ko/reference/graphics/d3d12/structs/d3d12_state_subobject_public.md)
- [D3D12_COMPUTE_PIPELINE_STATE_DESC](/ko/reference/graphics/d3d12/structs/d3d12_compute_pipeline_state_desc_public.md)
