c++ - direct3d9如何过滤像素艺术的纹理
问题描述
你好我想让像素艺术图像看起来不那么模糊我尝试设置采样器状态但我看不出有什么区别
device->SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_NONE);
我在 setsamplerstate 中尝试了几乎所有东西,但我看不出有什么区别
我知道我可以使用 Photoshop 将照片放大,但我可以使用 direct3d9 让它看起来很硬吗
解决方案
“像素艺术”通常是在没有任何混合或双线性过滤的情况下绘制的。对于旧版 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类。
推荐阅读
- python - 如何将语句和输入放在同一行
- java - Main.java 使用未经检查或不安全的操作 ArrayList
cartItems = myCart.getItemsList(); - python - 气流交叉 dag 依赖
- firebase - 如何在 https oncall 云功能中使用路由?
- java - Spring Data / Neo4j @Query 注解属性替换
- c# - 如何在卸载补丁期间跳过安装程序中的自定义操作?
- content-management-system - 如何为我的 DNN 模块添加额外的视图?
- influxdb - Flux 中单列的多项操作
- javascript - 当所有域输入值为 0 时,D3 范围返回一半的 graphHeight 而不是 0
- json - 如何根据xslt中的if条件从json中获取相应的值