Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
DirectX-缩小纹理质量_Directx_Textures - Fatal编程技术网

DirectX-缩小纹理质量

DirectX-缩小纹理质量,directx,textures,Directx,Textures,我正在DirectX中努力进行纹理过滤。当我将带纹理的四边形放置在远离相机的地方时,纹理质量会急剧下降,特别是在处理没有纹理的文本时。我希望尽可能保持最好的质量,无论性能如何。 目前我使用: d3dDevice->CreateTexture(Width, Height, 0, D3DUSAGE_AUTOGENMIPMAP, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED, &gTexture, NULL); d3dDevice->SetSamplerSta

我正在DirectX中努力进行纹理过滤。当我将带纹理的四边形放置在远离相机的地方时,纹理质量会急剧下降,特别是在处理没有纹理的文本时。我希望尽可能保持最好的质量,无论性能如何。 目前我使用:

d3dDevice->CreateTexture(Width, Height, 0, D3DUSAGE_AUTOGENMIPMAP, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED, &gTexture, NULL);

d3dDevice->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_ANISOTROPIC);
d3dDevice->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_ANISOTROPIC);
d3dDevice->SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_ANISOTROPIC);
但是,缩小仍然很糟糕(例如,与图像编辑器执行的大小调整相比)。最好的方法是什么?什么是“最无损”的过滤方法。
提前谢谢

您使用的各向异性级别是多少?将其设置为16x会有一点帮助,但您无能为力;远表面只需要更少的像素。我添加了行d3dDevice->SetSamplerState(0,D3DSAMP_MaxIsropisory,caps.MaxIsropisory);我添加了行
cd3ddevision->SetSamplerState(0,D3DSAMP\u max各向异性,caps.max各向异性)但它没有帮助。我知道有些损失是不可避免的。但我仍然确信存在更好的缩小算法。我猜它们没有在DirectX中实现是因为它们的性能/在这种情况下,DirectX不是实现源,这种事情发生在硬件本身上(硬件通常没有比各向异性更好的东西)。存在特定于供应商的模式的可能性很小,您可以尝试在目标芯片上的文件中查找它,但没有太多其他方法可以尝试。一种可能的替代方法,尽管涉及更多,是预生成LoD(这基本上是您想要的)。可以将mipmap烘焙到纹理中并使用这些纹理,烘焙允许艺术家提前调整它们。它还允许您加载纹理,运行软件算法,然后将完成的纹理输入GPU。当纹理加载时,您可以使用它创建自己的具有更高质量算法的mipmap。