antialiasing - 如何关闭 Direct3D 输出过滤

标签 antialiasing slimdx smoothing direct3d9

我正在使用 DirectX9 将视频输出渲染到屏幕上。 使用的库是SlimDX。

创建的软件用于标记输出设备中的坏像素,因此不进行纹理过滤/平滑至关重要。

我禁用了所有纹理过滤选项,禁用了抗锯齿功能,并将后缓冲区和渲染纹理之间的纹理以 1:1 的比例与屏幕对齐。 事实是,在某些设备上,DirectX 似乎对输出进行了一些双线性过滤/模糊。

我需要所有输出都是 block 状的,并带有-0-过滤。 由于所有调整大小代码都是在控件本身上操作的(没有后台缓冲区调整大小等),因此我没有调整后台缓冲区大小的选项。

奇怪的是,这只发生在某些设备上,而不是所有设备上。

如何告诉 DirectX 不要平滑它渲染到控件的内容? (禁用对后/前缓冲区执行的任何纹理过滤)

预先感谢您的任何帮助(:

对于那些不明白我想要摆脱什么的人 - 当渲染图像的分辨率低于绘制区域的分辨率时,Direct3D 在像素之间创建平滑过渡。 我想要的是将每个像素绘制为一个简单的矩形,完全没有过滤,在哪里可以找到控制此行为的设置?

最佳答案

我在网上查了一下,似乎没有任何地方可以解释这种行为。

发生了什么:
WindowsXP 及更早版本上的默认 DirectX 行为是平滑所有渲染输出(如果您渲染到的控件/屏幕与后备缓冲区的大小不完全相同)

从 WindowsVista 开始,默认行为是按原样保留像素(这基本上意味着代表每个像素的拉伸(stretch)矩形)

由于这是驱动程序本身的行为,因此用户完全无法控制: 唯一的解决方案是每次调整控件大小时重置后台缓冲区以保存每像素渲染,没有办法解决这个问题 - 否则 DirectX 可以控制调整大小技术

关于antialiasing - 如何关闭 Direct3D 输出过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9963568/

相关文章:

python - 减少数据噪音

python - Python 中的图像平滑

javascript - 在 pixi.js 中应用投影过滤器时,抗锯齿功能不起作用

sublimetext2 - 更改 Sublime Text 2 字体粗细

java - 修复由 2D 数组制成的 BufferedImage 的锯齿状边缘

c# - 用于 C# SlimDX 游戏 UI 的内容

c# - 如何用三角形覆盖多边形

c# - 在 C# 中使用 DirectX11 和 SlimDX 的 Nvidia 3d 视频

r - 使用 ggplot 用分类变量平滑线?

javascript - 摆脱 Chart.js Canvas 子像素