代码之家  ›  专栏  ›  技术社区  ›  Greg Dean

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

  •  0
  • Greg Dean  · 技术社区  · 16 年前

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

    2 回复  |  直到 16 年前
        1
  •  1
  •   faulty    16 年前

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

    要制作纹理,可以使用alpha混合、蒙版和所有类型的纹理操作技术,如果这就是你想要的。要操作像gdi+这样的单个像素,我仍然认为gdi+是一种方法。DirectX从来没有做过图像处理。

        2
  •  3
  •   Nils Pipenbrinck    16 年前

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

    这很容易。SDK附带的基本纹理DirectX示例可以调整为仅此而已。

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

    imho只需编写一小段代码,使用双线性从一个缓冲区到另一个缓冲区的缩放来调整图像的大小,会变得更简单、更快。