使用DirectX调整图像大小的示例代码

时间:2008-10-06 05:21:01

标签: image-processing directx

我知道这是可能的,并且比使用GDI +快得多。但是,我没有找到使用DirectX调整图像大小并将其保存到磁盘的任何好例子。我在GDI +中一遍又一遍地实现了这一点,这并不困难。然而,GDI +不使用任何硬件加速,我希望通过使用显卡获得更好的性能。

2 个答案:

答案 0 :(得分:3)

您可以将图像加载为纹理,将其纹理映射到四边形,然后在屏幕上绘制任意大小的四边形。这将进行缩放。之后,您可以从屏幕中获取像素数据,将其存储在文件中或进一步处理。

这很容易。 SDK附带的基本纹理DirectX示例可以进行调整以实现此目的。

然而,它 慢。不是渲染本身,而是像素数据从屏幕传输到内存缓冲区。

使用双线性缩放从一个缓冲区到另一个缓冲区,只需编写一个调整图像大小的代码就可以更加简单快捷。

答案 1 :(得分:1)

你真的需要使用DirectX吗? GDI +可以很好地调整图像大小。在DirectX中,您不需要调整图像大小,因为很可能您将图像显示为纹理。由于纹理只能应用于3d对象(三角形/多边形/网格),因此3d对象和视图端口的大小决定了显示的实际图像大小。如果需要在3d对象中缩放纹理,只需播放纹理坐标或矩阵。

要操纵纹理,您可以使用Alpha混合,蒙版和各种纹理操作技术,如果这是您正在寻找的。为了操纵像GDI +这样的单个像素,我仍然认为GDI +是可行的方法。 DirectX从未修补过图像处理。