D3DXSHEvalDirectionalLight 函数 (D3DX10.h)

注意

D3DX (D3DX 9、D3DX 10 和 D3DX 11) 实用工具库已弃用,并且不支持 Windows 应用商店应用。

注意

建议使用 球面调音数学 库函数 XMSHEvalDirectionalLight,而不是使用此函数。

评估定向光,并返回光谱球面和谐 (SH) 数据。

语法

HRESULT D3DXSHEvalDirectionalLight(
  _In_       UINT        Order,
  _In_ const D3DXVECTOR3 *pDir,
  _In_       FLOAT       RIntensity,
  _In_       FLOAT       GIntensity,
  _In_       FLOAT       BIntensity,
  _In_       FLOAT       *pROut,
  _In_       FLOAT       *pGOut,
  _In_       FLOAT       *pBOut
);

参数

Order [in]

类型: UINT

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

pDir [in]

类型: const D3DXVECTOR3*

指向 (x、y、z) 半球轴方向矢量的指针,用于评估 SH 基函数。 请参阅“备注”。

RIntensity [in]

类型: FLOAT

光线的红色强度。

GIntensity [in]

类型: FLOAT

光线的绿色强度。

BIntensity [in]

类型: FLOAT

光线的蓝色强度。

pROut [in]

类型: FLOAT*

指向红色分量的输出 SH 矢量的指针。

pGOut [in]

类型: FLOAT*

指向绿色分量的输出 SH 矢量的可选指针。

pBOut [in]

类型: FLOAT*

指向蓝色分量的输出 SH 矢量的可选指针。

返回值

类型: HRESULT

如果函数成功,则返回值D3D_OK。 如果函数失败,则返回值可以是:D3DERR_INVALIDCALL。

备注

计算输出向量时,如果强度比率 R/G/B 等于 1,则反照率为 1 的漫射对象上直接位于光线下的点的退出辐射度为 1.0。 这将计算三个光谱样本:将返回 pROut,而 pGOut 和 pBOut 可能会返回。

在具有单位半径的球体上,如下图所示,只需使用 “ta”(右手方向的 z 轴的角度)和 phi(从 z 开始的角度)来指定方向。

具有单位半径的球体的插图

以下公式显示了笛卡尔 (x、y、z) 与球面 (单位球体上的ta、phi) 坐标之间的关系。 角度 theta 在 0 到 2 pi 的范围内变化,而 phi 在 0 到 pi 之间变化。

笛卡尔坐标和球面坐标之间关系的公式

要求

要求
标头
D3DX10.h

D3DX10.lib

另请参阅

数学函数