改變D3D中的渲染狀態

改變D3D中的渲染狀態

1). 設置着色模式:                                                         

SetRenderState(D3DRS_SHADEMODE, D3DSHADE_FLAT) //設置平面着色模式

SetRenderState(D3DRS_SHADEMODE, D3DSHADE_GOURAUD) //設置格勞德着色模式

2). 設置多邊形填充模式:

SetRenderState(D3DRS_FILLMODED3DFILL_POINT //點填充模式,D3D在多邊形的每個頂點繪製一個像素

SetRenderState(D3DRS_FILLMODED3DFILL_WIREFRAME //線填充模式,D3D在多邊形的每個邊繪製一條線

SetRenderState(D3DRS_FILLMODED3DFILL_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的枚舉結構。

發佈了1 篇原創文章 · 獲贊 1 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章