【问题标题】:direct3d9 how to filter texture for pixel artdirect3d9如何过滤像素艺术的纹理
【发布时间】:2019-10-01 06:40:48
【问题描述】:

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

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

我几乎尝试了 setsamplerstate 中的所有内容,但我发现没有任何区别

我知道我可以使用 Photoshop 将照片放大,但我可以使用 direct3d9 使其看起来硬边

【问题讨论】:

  • 把D3DTEXF_NONE改成D3DTEXF_POINT有帮助吗?
  • 很遗憾没有
  • 这似乎是对纹理过滤选项的一个很好的总结docs.microsoft.com/en-us/windows/win32/direct3d9/…
  • 我试过了
  • 快速提问,您的纹理是否加载并实现了 MIP 级别?这可以解释模糊性,即使在使用点采样时也是如此。

标签: c++ directx pixel direct3d9


【解决方案1】:

“像素艺术”通常是在没有任何混合或双线性过滤的情况下绘制的。对于旧版 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++,请查看 SpriteBatch 类,在 DirectX Tool Kit 中具有 CommonStates::PointClamp() 采样器状态。

【讨论】:

  • 仍然不适合我,我不使用 Direct3D 11,因为我找不到很多关于它的好教程
  • 互联网上有很多关于 Direct3D 11 的优秀教程。请参阅 this blog post。
  • 教程明智,将 Rastertek 视为 C++ DX 11 示例的绝佳资源。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多