首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对各向异性过滤支持进行硬件级别检查?

如何对各向异性过滤支持进行硬件级别检查?
EN

Stack Overflow用户
提问于 2015-06-28 02:56:48
回答 2查看 486关注 0票数 1

我刚刚在我的游戏中实现了各向异性过滤支持,但我不太确定如何进行硬件级别的检查,以查看用户硬件是否支持该方法。有没有办法使用CheckDeviceFormat来查看硬件是否支持它,或者如果硬件不支持各向异性过滤,设备是否会自动默认为三线性?提前感谢:)

更新:新问题,我刚刚做了更多的测试来确认是否使用了x16 af,显然不是,它只是一个x1 af。也许我错过了什么?我应用了samplerstate并将最大各向异性设置为16。下面的代码显示了我如何设置采样器状态:

代码语言:javascript
复制
        // 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:这张图片显示了你离相机越远就会出现的模糊量:

EN

回答 2

Stack Overflow用户

发布于 2015-06-28 07:41:33

您的图形库应该已经实现了如下函数:

代码语言:javascript
复制
magic::supports(magic::anistropic_filtering)     //say magic is the name of your library

它返回一个具有明显含义的布尔值。

不过,这取决于您的图形库。

票数 0
EN

Stack Overflow用户

发布于 2015-06-29 04:19:50

因此,正如我之前发布的,您可以通过调用IDirect3D9::GetDeviceCaps()来检查D3D设备的硬件功能。您需要将指针传递给D3DCAPS9结构,然后将用收集到的信息填充该结构。在这些信息中有"TextureFilterCaps“和"MaxAnisotropy”,它们可以告诉你是否支持各向异性过滤以及支持程度如何。

至于您的第二个问题,我不确定,但我认为您还必须将D3DSAMP_MIPFILTER设置为D3DTEXF_ANISOTROPIC才能使其正常工作。

您如何测试使用了哪种程度的各向同性?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31092399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档