语法
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)的其他部分不能直接引用此集合中的导出项。这可以略微减少集合的内存占用,因为驱动程序无需在集合中保留未编译的代码,以防某些外部函数调用后可能需要一起编译所有代码。也就是说,如果此集合中代码的所有必需子对象关联并未在本地定义,则驱动程序可能仍无法编译着色器代码,并可能仍需要保留未编译的代码。将外部子对象关联到本地导出项的外部定义的子对象关联不算作对本地定义的外部依赖,因此此标志的存在与否不会影响是否允许该关联。另一方面,如果当前集合定义了一个子对象关联,将本地定义的子对象关联到某个外部导出项(例如着色器),则算作对本地定义的外部依赖,且必须设置此标志。无论是否存在此标志,如果集合中的着色器入口点(例如命中组或未命中着色器)被容器状态对象(例如 RTPSO)导出,则它们对该容器状态对象都是可见的入口点。对于 RTPSO,导出的入口点可用于光线追踪的着色器表。 |
要求
头文件: d3d12_xs.h 或 d3d12_x.h库: d3d12_xs.lib 或 d3d12_x.lib
支持的平台:XBOX Series 主机和 XBOX One 系列
