XMVector3Refract 函式 (directxmath.h)
在 3D 標準向量之間重新分割事件 3D 向量。
語法
XMVECTOR XM_CALLCONV XMVector3Refract(
[in] FXMVECTOR Incident,
[in] FXMVECTOR Normal,
[in] float RefractionIndex
) noexcept;
參數
[in] Incident
要 refract 的 3D 事件向量。
[in] Normal
3D 一般向量可透過重新參考事件向量。
[in] RefractionIndex
refraction 的索引。 請參閱<備註>。
傳回值
傳回已參考的事件向量。 如果事件向量與常態之間的 refraction 索引和角度,使得結果為總內部反映,則函式會傳回格式 < 為 0.0f、0.0f、0.0f、0.0f、undefined >的向量。
備註
下列虛擬程式代碼示範函式的作業:
XMVECTOR Result;
float t = ( Incident.x * Normal.x + Incident.y * Normal.y + Incident.z * Normal.z );
float r = 1.0f - RefractionIndex * RefractionIndex * (1.0f - t * t);
if (r < 0.0f) // Total internal reflection
{
Result.x = 0.0f;
Result.y = 0.0f;
Result.z = 0.0f;
}
else
{
float s = RefractionIndex * t + sqrt(r);
Result.x = RefractionIndex * Incident.x - s * Normal.x;
Result.y = RefractionIndex * Incident.y - s * Normal.y;
Result.z = RefractionIndex * Incident.z - s * Normal.z;
}
Result.w = undefined;
return Result;
refraction 的索引是包含事件向量之媒體的 refraction 索引與所輸入之媒體的 refraction 索引的比率 (,其中媒體的 refraction 索引是媒體的 refraction 索引本身是光在清理中的速度與媒體) 速度的比率。
平臺需求
Microsoft Visual Studio 2010 或 Microsoft Visual Studio 2012 搭配 Windows SDK for Windows 8。 支援 Win32 傳統型應用程式、Windows 市集應用程式和 Windows Phone 8 個應用程式。規格需求
需求 | 值 |
---|---|
目標平台 | Windows |
標頭 | directxmath.h (包含 DirectXMath.h) |