首页 > 解决方案 > direct3d9如何过滤像素艺术的纹理

问题描述

你好我想让像素艺术图像看起来不那么模糊我尝试设置采样器状态但我看不出有什么区别

device->SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_NONE);

在此处输入图像描述

我在 setsamplerstate 中尝试了几乎所有东西,但我看不出有什么区别

我知道我可以使用 Photoshop 将照片放大,但我可以使用 direct3d9 让它看起来很硬吗

标签: c++directxpixeldirect3d9

解决方案


“像素艺术”通常是在没有任何混合或双线性过滤的情况下绘制的。对于旧版 Direct3D 9,您将使用(假设您的纹理绑定到插槽 0):

device->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_POINT);
device->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_POINT);
device->SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_NONE);

此时,您根本不应该使用旧版 Direct3D 9。Direct3D 11 是您最好的选择。如果您使用 C++,请查看DirectX Tool Kit中具有CommonStates::PointClamp()采样器状态的SpriteBatch类。


推荐阅读