
Pixel data: 
   
座標: X Y Z
顏色: RGBA
 
  簡單地說這是一種讓3D物件產生透明感的技術。屏幕上顯示的3D物件,每個像素中有紅、綠、藍三組數值。若3D環境中允許像素能擁有一組α值,我們就稱它擁有一個α通道。α值是記載像素的透明度,範圍在0.0(透明)到1.0(不透明)之間這樣。一來使得每一個物件都可以擁有不同的透明程度。比如說,玻璃會擁有很高的透明度,而一塊木頭可能就沒什麼透明度可言。α混合這個功能,就是處理兩個物件在螢幕畫面上疊加的時候,還會將α值列入考慮,使其呈現接近真實物件的效果。
   
       | Over定義:  RGBc = RGBf   + (1-αf) RGBb αc =αf   +(1-αf) αb   Comp 定義: RGBc = β(f over b) + (1-β)(b over f) | 
 
   
  最後的描繪值= SRC(來源)*blending係數 + DEST(目的地)* blending係數
   
 
  最後的描繪值= SRC*SRC的alpha值 + DEST*(1-SRC的alpha值)   
//--------------------------------------
  // 設定Rendering state參數
  //--------------------------------------
  // 指定兩面描繪的模式
  pD3DDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
  // 光源沒有計算
  pD3DDevice->SetRenderState(D3DRS_LIGHTING, FALSE);
  // 比較Z軸
  pD3DDevice->SetRenderState(D3DRS_ZENABLE, TRUE);
  // 混色模式(高品質描繪)
  pD3DDevice->SetRenderState( D3DRS_DITHERENABLE, TRUE );
  // Alfa Brending執行
  pD3DDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE);
  // Alfa Brending狀態的設定
  pD3DDevice->SetRenderState( D3DRS_SRCBLEND,  D3DBLEND_SRCALPHA );
  pD3DDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
   
       | 一般半透明效果(alpha=0.0~1.0): D3DRS_SRCBLEND, D3DBLEND_SRCALPHA  D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA | 
       
   
  - 畫半透明模型要先畫其後面的模型, 否則即使前面是透明的, 後面的東西也不被描繪
 
  // 描繪四方形
  pD3DDevice->SetStreamSource( 0, m_pVB1, 0, sizeof(MY_VERTEX) );
  pD3DDevice->SetFVF( MY_VERTEX_FVF );
  pD3DDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2 );
  // 描繪三角形
  pD3DDevice->SetStreamSource( 0, m_pVB2, 0, sizeof(MY_VERTEX) );
  pD3DDevice->SetFVF( MY_VERTEX_FVF );
  pD3DDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 1 );