0

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

4

2 回答 2

3

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

这简单。可以调整 SDK 附带的基本纹理 DirectX 示例来执行此操作。

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

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

于 2008-10-06T09:26:52.253 回答
1

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

要操纵纹理,您可以使用 alpha 混合、遮罩和各种纹理操纵技术,如果这是您要寻找的。要像 GDI+ 那样操作单个像素,我仍然认为 GDI+ 是可行的方法。DirectX 从来没有被修补来进行图像处理。

于 2008-10-06T09:30:47.957 回答