改變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的枚舉結構。