D3DXSHEvalHemisphereLight 函数 (D3dx9math.h)
注意
D3DX (D3DX 9、D3DX 10 和 D3DX 11) 实用工具库已弃用,并且不支持 Windows 应用商店应用。
注意
建议使用 球面调音数学 库函数 XMSHEvalHemisphereLight,而不是使用此函数。
计算光,该光是球体上两种颜色之间的线性内插。
语法
HRESULT D3DXSHEvalHemisphereLight(
_In_ UINT Order,
_In_ const D3DXVECTOR3 *pDir,
_In_ D3DXCOLOR Top,
_In_ D3DXCOLOR Bottom,
_In_ FLOAT *pROut,
_In_ FLOAT *pGOut,
_In_ FLOAT *pBOut
);
parameters
-
Order [in]
-
类型: UINT
球面和谐 (SH) 评估的顺序。 必须在 D3DXSH_MINORDER 范围内才能D3DXSH_MAXORDER(含)。 计算将生成 Order² 系数。 评估程度为 Order - 1。
-
pDir [in]
-
类型: const D3DXVECTOR3*
指向 (x、y、z) 半球轴方向矢量的指针,用于评估 SH 基函数。 请参阅“备注”。
-
Top [in]
-
类型: D3DXCOLOR
天空颜色。
-
底部 [in]
-
类型: D3DXCOLOR
基色。
-
pROut [in]
-
类型: FLOAT*
指向红色分量的输出 SH 矢量的指针。
-
pGOut [in]
-
类型: FLOAT*
指向绿色分量的输出 SH 矢量的指针。
-
pBOut [in]
-
类型: FLOAT*
指向蓝色分量的输出 SH 矢量的指针。
返回值
类型: HRESULT
如果函数成功,则返回值D3D_OK。 如果函数失败,则返回值可以是:D3DERR_INVALIDCALL。
备注
内插在两个点之间以线性方式完成,而不是在球体表面 (也就是说,如果轴 (为 0,0,1,) 则以 Z 表示线性,而不是在方位角) 。 生成的球面照明函数已规范化,因此,如果顶部颜色为白色,底部颜色为黑色,则) ,完全漫射表面上的点和方向 pDir 的法线指向 pDir 将导致退出辐射值为 1 (。 这是一个非常简单的模型, 其中 Top 表示“天空”的强度, 底部 表示“地面”的强度。
在具有单位半径的球体上,如下图所示,只需使用 “ta”( 右手方向的 z 轴的角度)和 phi(从 z 开始的角度)来指定方向。
以下公式显示了笛卡尔 (x、y、z) 与球面 (单位球体上的ta、phi) 坐标之间的关系。 角度 theta 在 0 到 2 pi 的范围内变化,而 phi 在 0 到 pi 之间变化。
要求
要求 | 值 |
---|---|
标头 |
|
库 |
|
另请参阅