改變D3D中的渲染狀態
1). 設置着色模式:
SetRenderState(D3DRS_SHADEMODE, D3DSHADE_FLAT) //設置平面着色模式
SetRenderState(D3DRS_SHADEMODE, D3DSHADE_GOURAUD) //設置格勞德着色模式
2). 設置多邊形填充模式:
SetRenderState(D3DRS_FILLMODE, D3DFILL_POINT) //點填充模式,D3D在多邊形的每個頂點繪製一個像素
SetRenderState(D3DRS_FILLMODE, D3DFILL_WIREFRAME) //線填充模式,D3D在多邊形的每個邊繪製一條線
SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID) //面模式,D3D默認模式,對多邊形的面進行填充
3). 設置全景圖形抗鋸齒:
SetRenderState(D3DRS_MUTISAMPLEANTIALIAS, TRUE) //抗鋸齒
SetRenderState(D3DRS_MUTISAMPLEANTIALIAS, FALSE) //不抗鋸齒
4). 設置剔除模式:
SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE) //不剔除任何面
5). 設置光照模式:
SetRenderState(D3DRS_AMBIENT, D3DCOLOR ambientColor); //爲整個場景設置環境光
SetRenderState(D3DRS_SPECULARENABLE, TRUE); //激活鏡面反射計算(D3D默認情況下關閉)
6). 啓動/關閉深度測試:
SetRenderState( D3DRS_ZENABLE, TRUE ); //啓用深度測試
7) 設置紋理過濾器
//線性紋理
SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
//最近點採樣
SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_ POINT);
SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_POINT);
//各向異性紋理過濾
SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_ANISOTROPIC)
SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_ ANISOTROPIC);
8)
SetRenderState( D3DRS_POINTSCALEENABLE, TRUE ); //打開縮放功能
9)
SetRenderState( D3DRS_POINTSCALE_A , FtoDW( 1.00f ));//設置因子,下同
SetRenderState( D3DRS_POINTSCALE_B , FtoDW( 1.00F ));
SetRenderState( D3DRS_POINTSCALE_C , FtoDW( 1.00f ));
10)
SetRenderState( D3DRS_POINTSIZE_MAX, FtoDW( 5.00f ));//設置點大小上限,下類似
SetRenderState( D3DRS_POINTSIZE_MAX, FtoDW( 5.00f ));
SetRenderState( D3DRS_POINTSPRITEENABLE , TRUE ) ; //打開點精靈效果
SetRenderState( D3DRS_AMBIENT, 0xffffffff ); //設置環境光顏色開啓ALPHA混合效果
11)
設置混合因子:
源:SetRenderState( D3DRS_SRCBLEND , D3DBLEND_SRCALPHA );
目的:SetRenderState( D3DRS_DESTBLEND , D3DBLEND_INVSRCALPHA);
第二個參數是 D3DBLEND的枚舉結構
D3DCMP_NEVER
|
總是返回FALSE
|
D3DCMP_LESS (常用)
|
小於深度緩衝區的相應值時返回TRUE
|
D3DCMP_EQUAL
|
等於
|
D3DCMP_LESSEQUAL
|
小於等於
|
D3DCMP_GREATER
|
大於
|
D3DCMP_NOTEQUAL
|
不等於
|
D3DCMP_GREATEREQUAL
|
大於等於
|
D3DCMP_ALWAYS
|
總是返回TRUE
|
Blend mode factor
|
Description
|
D3DBLEND_ZERO
|
(0, 0, 0, 0)
|
D3DBLEND_ONE
|
(1, 1, 1, 1)
|
D3DBLEND_SRCCOLOR
|
(Rs, Gs, Bs, As)
|
D3DBLEND_INVSRCCOLOR
|
(1-Rs, 1-Gs, 1-Bs, 1-As)
|
D3DBLEND_SRCALPHA
|
(As, As, As, As)
|
D3DBLEND_INVSRCALPHA
|
(1-As, 1-As, 1-As, 1-As)
|
D3DBLEND_DESTALPHA
|
(Ad, Ad, Ad, Ad)
|
D3DBLEND_INVDESTALPHA
|
(1-Ad, 1-Ad, 1-Ad, 1-Ad)
|
D3DBLEND_DESTCOLOR
|
(Rd, Gd, Bd, Ad)
|
D3DBLEND_INVDESTCOLOR
|
(1-Rd, 1-Gd, 1-Bd, 1-Ad)
|
D3DBLEND_SRCALPHASAT
|
(f, f, f, 1); f = min(As, 1-Ad)
|
D3DBLENDOP_ADD
|
源計算結果與顏色緩衝區計算結果相加
|
D3DBLENDOP_SUBTRACT
|
源計算結果減去顏色緩衝區計算結果
|
D3DBLENDOP_REVSUBTRACT
|
顏色緩衝區計算結果減去源計算結果
|
D3DBLENDOP_MIN
|
MIN(源計算結果, 顏色緩衝區計算結果)
|
D3DBLENDOP_MAX
|
MAX(源計算結果, 顏色緩衝區計算結果)
|