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 对象。

Order [in]

类型: UINT

SH 评估的顺序。 必须在 D3DXSH_MINORDER 范围内才能D3DXSH_MAXORDER(含)。 计算将生成 Order² 系数。 评估程度为 Order - 1。

NumVolSamples.xml [in]

类型: UINT

示例位置数。

pSampleLocs [in]

类型: const D3DXVECTOR3*

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

pDataOut [in, out]

类型: LPD3DXPRTBUFFER

指向输出 ID3DXPRTBuffer 对象的指针,该对象将来自前一个光的直接照明反射到 SH 基向量中。 此缓冲区必须为模拟分配正确数量的颜色通道。

返回值

类型: HRESULT

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

备注

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

要求

要求
标头
D3DX9Mesh.h

D3dx9.lib

另请参阅

ID3DXPRTEngine

ID3DXPRTEngine::ComputeVolumeSamplesDirectSH