共用方式為


環境光源 (Direct3D 9)

環境光線為場景提供定值光線。 它同等地照亮所有物件端點,因為其不取決於任何其他照明因素,例如頂點標準、光源方向、光源位置、範圍或衰減。 這是最快速的光源類型,但會產生最不實際的結果。 Direct3D 包含單一全域環境光線屬性,您可加以使用而不需建立任何光線。 或者,您可以將任何光線物件設為提供環境光線。 場景的環境光線由下列方程式描述。

環境光源 = Cₐ*[Gₐ + sum (Atteni*Spoti*Lai) ]

其中:

參數 預設值 類型 描述
Cₐ (0,0,0,0) D3DCOLORVALUE 材料環境色彩
Gₐ (0,0,0,0) D3DCOLORVALUE 全域環境色彩
Atteni (0,0,0,0) D3DCOLORVALUE 第 i 個光線的光衰減。 請參閱 衰減和焦點因數 (Direct3D 9)
Spoti (0,0,0,0) D3DVECTOR 第 i 個光線的聚光燈係數。 請參閱 衰減和焦點因數 (Direct3D 9)
Sum N/A N/A 環境光線的加總
Lai (0,0,0,0) D3DVECTOR 第 i 個光線的環境光線色彩

 

Cₐ 的值為︰

  • 頂點 color1,如果 AMBIENTMATERIALSOURCE = D3DMCS_COLOR1,而且頂點宣告中會提供第一個頂點色彩。
  • 頂點色彩2,如果 AMBIENTMATERIALSOURCE = D3DMCS_COLOR2,則會在頂點宣告中提供第二個頂點色彩。
  • 材料環境色彩。

注意

如果使用了 AMBIENTMATERIALSOURCE 選項,而且未提供頂點色彩,則會使用材質環境色彩。

 

若要使用材料環境色彩,請使用下方範例程式碼所示的 SetMaterial。

Gₐ 是全域環境色彩。 它是使用 SetRenderState (D3DRS_AMBIENT) 來設定。 Direct3D 場景中有一個全域環境色彩。 此參數與 Direct3D 光線物件無關聯。

Lai 是場景中第 i 個光線的環境色彩。 每個 Direct3D 光線都有一組屬性,其中一項是環境色彩。 sum(Lai) 這項字詞是場景中所有環境色彩的加總。

範例

在此範例中,物件使用場景環境光線和材料環境色彩上色。

#define GRAY_COLOR  0x00bfbfbf

// create material
D3DMATERIAL9 mtrl;
ZeroMemory(&mtrl, sizeof(mtrl));
mtrl.Ambient.r = 0.75f;
mtrl.Ambient.g = 0.0f;
mtrl.Ambient.b = 0.0f;
mtrl.Ambient.a = 0.0f;
m_pd3dDevice->SetMaterial(&mtrl);
m_pd3dDevice->SetRenderState(D3DRS_AMBIENT, GRAY_COLOR);

根據方程式,為物件端點產生的色彩是材質色彩和淺色的組合。

下方兩個圖例顯示材質色彩 (灰色),以及淺色 (鮮紅)。

紅色球體之灰色球體 圖例的圖例

下圖顯示產生的場景。 場景中唯一的物件為球體。 環境光線使用相同色彩照亮所有物件端點。 其不取決於頂點標準或光線方向。 如此一來,球體看起來像是 2D 圓形,因為物件表面周圍的陰影並無差別。

使用環境光線的球體圖例

若要讓物件看起來更逼真,請在環境光線之外套用光源擴散或反射光源。

光源的數學