Direct3D中的雾化(3) 摘要: 要使用基于范围的雾化,首先需要检查当前硬件是否支持基于范围的雾化:
// check if hardware supports range fog
D3DCAPS9 caps;
g_device->GetDeviceCaps(&caps);
if(! (caps.RasterCaps & D3DPRASTERCAPS_FOGRANGE))
return false;
Direct3D中的雾化(2) 摘要:
添加像素雾化效果也需要对Direct3D渲染设备进行三方面的设置:启用雾化效果、设置雾化混合因子计算公式、设置雾化参数。添加像素雾化效果和添加顶点雾化效果基本相同,唯一的区别是雾化混合因子计算公式的设置。像素雾化混合因子计算公式也是采用函数IDirect3DDevice9::
SetRenderState()设置,不同的是第一个参数需要设置为D3DRS_FOGTABLEMODE。
Direct3D中的雾化(1) 摘要:
雾化效果是计算机图形学中应用最广的效果之一,它不仅能显著地增加视觉效果的真实感,并可以提供一定的深度感。在实时图形程序,特别是游戏设计程序中,为了确保图形系统的运行速度,图形开发人员往往在位于观察点远处的场景使用较为简单的三维模型,甚至不绘制物体,而在近处使用复杂模型,这样就可能造成物体变形、突然出现或突然消失等失真现象,雾化效果可以有效地避免这种失真现象。
在Direct3D图形系统中,雾化是通过将景物颜色与雾的颜色,以随物体到观察点距离增加而衰减的混合因子混合而实现的。距离观察点越近,混合因子越大,场景内的物体颜色越大,雾的颜色越小,景物就越清晰;随着观察点拉远,混合因子逐渐变小,场景中物体的颜色变小,而物的颜色变大,景物越来越模糊。Direct3D计算雾化的方法如下:
color = f * colorscene + (1-f) * colorfog
其中,color表示最终经过雾化处理的颜色,colorscene表示物体原来的颜色,colorfog表示应用程序中定义的雾的颜色,f表示雾化混合因子。