> ## 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.

# GetShaderStackSize (XBOX Series consoles)

> 获取在 HLSL 中调用光线追踪着色器所需的堆栈内存量。

获取在 HLSL 中调用光线追踪着色器所需的堆栈内存量。

## 语法

```cpp theme={null}
UINT64 GetShaderStackSize(
    LPCWSTR pExportName
)
```

### 参数

*pExportName*\
类型：LPCWSTR

状态对象中要检索堆栈大小的着色器入口点。对于命中组，必须使用以下语法指定该命中组内的单个着色器：

hitGroupName::shaderType

其中 <i>hitGroupName</i> 是命中组的入口点名称，而 <i>shaderType</i> 为下列之一：

<ul>
  <li>intersection</li>
  <li>anyhit</li>
  <li>closesthit</li>
</ul>

这些值都区分大小写。

一个示例值为：“myTreeLeafHitGroup::anyhit”。

### 返回值

类型：UINT64

调用该着色器所需的堆栈内存量，以字节为单位。如果该着色器在状态对象中未完全解析，或该着色器未知，或其类型（例如命中组）不适用堆栈大小，则返回值为 0xffffffff。该 32 位的 0xffffffff 值用作 UINT64 返回值，以确保当与其他值相加以计算整体管道堆栈大小时，无效返回值不会被忽略。

## 备注

只有当应用程序希望通过调用 [SetPipelineStackSize](/reference/graphics/d3d12/interfaces/id3d12stateobjectproperties/methods/id3d12stateobjectproperties_setpipelinestacksize_public) 来配置堆栈大小，而不是依赖保守的默认堆栈大小时，才需要调用此方法。此方法仅对光线生成着色器、命中组、未命中着色器和可调用着色器有效。即使光线生成着色器位于堆栈底部，也可能返回非零值。

对于命中组，必须为构成它的各个着色器（相交着色器、任意命中着色器、最近命中着色器）分别查询堆栈大小，因为每个着色器的堆栈大小要求可能不同。不能直接对这些单独的着色器查询堆栈大小，因为它们的编译方式可能受包含它们的整个命中组的影响。<i>pExportName</i> 参数包含用于标识命中组内单个着色器的语法。

此 API 可在集合状态对象或光线追踪管道状态对象上调用。

## 要求

**头文件：** d3d12\_xs.h\
**库：** d3d12\_xs.lib\
**支持的平台**：XBOX Series 主机

## 另请参阅

[ID3D12StateObjectProperties](/reference/graphics/d3d12_xs/interfaces/ID3D12StateObjectProperties/id3d12stateobjectproperties)
