我刚刚在我的游戏中实现了各向异性过滤支持,但我不太确定如何进行硬件级别的检查,以查看用户硬件是否支持该方法。有没有办法使用CheckDeviceFormat来查看硬件是否支持它,或者如果硬件不支持各向异性过滤,设备是否会自动默认为三线性?提前感谢:)
更新:新问题,我刚刚做了更多的测试来确认是否使用了x16 af,显然不是,它只是一个x1 af。也许我错过了什么?我应用了samplerstate并将最大各向异性设置为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:这张图片显示了你离相机越远就会出现的模糊量:

发布于 2015-06-28 07:41:33
您的图形库应该已经实现了如下函数:
magic::supports(magic::anistropic_filtering) //say magic is the name of your library它返回一个具有明显含义的布尔值。
不过,这取决于您的图形库。
发布于 2015-06-29 04:19:50
因此,正如我之前发布的,您可以通过调用IDirect3D9::GetDeviceCaps()来检查D3D设备的硬件功能。您需要将指针传递给D3DCAPS9结构,然后将用收集到的信息填充该结构。在这些信息中有"TextureFilterCaps“和"MaxAnisotropy”,它们可以告诉你是否支持各向异性过滤以及支持程度如何。
至于您的第二个问题,我不确定,但我认为您还必须将D3DSAMP_MIPFILTER设置为D3DTEXF_ANISOTROPIC才能使其正常工作。
您如何测试使用了哪种程度的各向同性?
https://stackoverflow.com/questions/31092399
复制相似问题