2

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

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

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

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

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

我如何告诉 DirectX 不要平滑它呈现给控件的内容?(禁用对后/前缓冲区进行的任何纹理过滤)

在此先感谢您的帮助(:

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

4

1 回答 1

3

我在网上查看了它,似乎在任何地方都没有对这种行为进行适当的解释。

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

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

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

于 2012-05-09T14:16:17.400 回答