我刚刚在我的游戏中实现了各向异性过滤支持,但我不太确定如何进行硬件级别检查以查看用户硬件是否支持该方法。有没有办法使用 CheckDeviceFormat 查看硬件是否支持它,或者如果硬件不支持各向异性过滤,设备是否会自动默认为三线性?提前致谢:)
更新:新问题,我只是做了一些更多的测试来确认是否正在使用 x16 自动对焦,显然不是,它只是一个 x1 自动对焦。也许我错过了什么?我应用了采样器状态并将最大各向异性设置为 16。这是显示我如何设置采样器状态的代码:
// 0 = textures
pd3dDevice->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_ANISOTROPIC);
pd3dDevice->SetSamplerState( 0, D3DSAMP_MINFILTER , D3DTEXF_ANISOTROPIC);
pd3dDevice->SetSamplerState(0, D3DSAMP_MIPFILTER, bTrilinear ? D3DTEXF_LINEAR : D3DTEXF_NONE);
pd3dDevice->SetSamplerState(0, D3DSAMP_MAXANISOTROPY, 16);
// 1 = lightmaps
pd3dDevice->SetSamplerState(1, D3DSAMP_MAGFILTER, D3DTEXF_ANISOTROPIC);
pd3dDevice->SetSamplerState( 1, D3DSAMP_MINFILTER , D3DTEXF_ANISOTROPIC);
pd3dDevice->SetSamplerState(1, D3DSAMP_MIPFILTER, bTrilinear ? D3DTEXF_LINEAR : D3DTEXF_NONE);
pd3dDevice->SetSamplerState(1, D3DSAMP_MAXANISOTROPY, 16);
更新 2:这张图片显示了你离相机越远发生的模糊程度:
您的图形库应该已经实现了如下功能:
magic::supports(magic::anistropic_filtering) //say magic is the name of your library
它返回一个具有明显含义的 bool 值。
不过,这取决于您的图形库。
我是一名优秀的程序员,十分优秀!