ID3DXPRTEngine::ComputeVolumeSamples 方法

计算从上一个光弹跳到球面和谐 (SH) 表示指定位置的事件辐射度的基础矢量的投影。

语法

HRESULT ComputeVolumeSamples(
  [in]            LPD3DXPRTBUFFER pSurfDataIn,
  [in]            UINT            Order,
  [in]            UINT            NumVolSamples.xml,
  [in]      const D3DXVECTOR3     *pSampleLocs,
  [in, out]       LPD3DXPRTBUFFER pDataOut
);

参数

pSurfDataIn [in]

类型: LPD3DXPRTBUFFER

指向一个输入 ID3DXPRTBuffer 对象的指针,该对象代表上一个光线弹跳中的 3D 对象。

顺序 [in]

类型: UINT

SH 评估的顺序。 必须处于 D3DXSH_MINORDER 范围内,才能D3DXSH_MAXORDER(含)。 求值生成 OrderTm 系数。 评估程度为 Order - 1。

NumVolSamples.xml [in]

类型: UINT

示例位置数。

pSampleLocs [in]

类型: const D3DXVECTOR3*

每个示例的位置。 如果 pSampleLocs 为 NULL,则 ComputeVolumeSamples 将在每个网格顶点计算传输矩阵。 但是,如果 pSampleLocs 不是 NULL,则必须在 (设置 UseSphere = TRUE 的球体上采样,在 ID3DXPRTEngine::SetSamplingInfo) ; 否则,ComputeVolumeSamples 将返回D3DERR_INVALIDCALL。

pDataOut [in, out]

类型: LPD3DXPRTBUFFER

指向输出 ID3DXPRTBuffer 对象的指针,该对象投影上一个光中的直接照明会弹入 SH 基础向量。 此缓冲区必须具有为模拟分配的正确颜色通道数。

返回值

类型: HRESULT

如果方法成功,则返回值D3D_OK。 如果该方法失败,则返回值可以是下列值之一:D3DERR_INVALIDCALL,E_OUTOFMEMORY。

注解

此方法计算源辐射函数中的光如何反射出表面,该图面代表 pSurfDataIn () 的场景,并到达 pSampleLocs 指定的空间中的每个点。 SH 系数表示从源辐射到传输的事件辐射的每个 pSampleLocs 点的映射。

要求

要求 Value
标头
D3DX9Mesh.h

D3dx9.lib

另请参阅

ID3DXPRTEngine

ID3DXPRTEngine::ComputeVolumeSamplesDirectSH