【D3D补遗】五 RenderState

Posted on 2008-12-05 12:17  活着就是幸福  阅读(404)  评论(0编辑  收藏  举报
1. alpha混合允许一个surface上的颜色材质和纹理通过透明度混合到另一个surface上。alpha混合依赖于D3DRS_SRCBLEND和D3DRS_DESTBLEND 。他们是成对使用的。

2.  alpha测试
D3DRS_ALPHATESTENABLE控制开关。
D3DRS_ALPHAFUNC 控制行为
D3DRS_ALPHAREF 控制参考值
如果硬件不支持alpha测试那么会全部画上去。

3. 环境光
D3DRS_AMBIENT + 颜色值

4. 深度buffer
D3DRS_ZENABLE 开关zbuffer
D3DRS_ZWRITEENABLE  开关写zbuffer
D3DRS_ZFUNC  控制比较
D3DRS_DEPTHBIAS 避免z-fighting

5. D3DRS_FOGENABLE 开关雾
D3DRS_FOGCOLOR 雾颜色(alpha分量被忽略)
D3DRS_FOGTABLEMODE 和 D3DRS_FOGVERTEXMODE 控制雾计算公式,分别设置为D3DFOG_NONE 可以开关像素雾和顶点雾。如果都打开了则系统只使用像素雾。
D3DRS_FOGSTART 和 D3DRS_FOGEND控制D3DFOG_LINEAR 模式下的雾公式参数。D3DRS_FOGDENSITY 控制指数雾公式下的密度。

6. 光照
如果不使用顶点shader或者像素shader,可以使用D3D内置光照引擎。它需要包含每顶点法线的顶点数据。如果没有提供法线,光照计算会产生为0的点积。

7. 没有提供纹理的图元会使用指定的材质或者顶点颜色。可以使用D3DFILLMODE 改变填充模式。
D3DRS_DITHERENABLE 可以开关抖动。
线上最后一个像素可能会和其他图元重叠。D3DRS_LASTPIXEL可以控制。绘制轮廓可使用 ID3DXLine接口。