Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 使用DirectX调整图像大小的示例代码_Image Processing_Directx - Fatal编程技术网

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

Image processing 使用DirectX调整图像大小的示例代码,image-processing,directx,Image Processing,Directx,我知道这是可能的,而且比使用GDI+快得多。但是,我还没有找到任何使用DirectX调整图像大小并将其保存到磁盘的好例子。我在GDI+中反复实现了这一点,这并不困难。但是GDI+不使用任何硬件加速,我希望通过点击图形卡获得更好的性能。您可以将图像作为纹理加载,将其纹理映射到四边形上,并在屏幕上绘制任意大小的四边形。这将完成缩放。之后,您可以从屏幕上获取像素数据,将其存储在文件中或进一步处理 这很容易。SDK附带的基本纹理DirectX示例可以调整以实现这一点 然而,它是缓慢的。不是渲染本身,而是

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

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

这很容易。SDK附带的基本纹理DirectX示例可以调整以实现这一点

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


我想,编写一个小代码,使用双线性缩放从一个缓冲区到另一个缓冲区来调整图像的大小会简单得多,速度也会快得多。

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

这很容易。SDK附带的基本纹理DirectX示例可以调整以实现这一点

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


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

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


要计算纹理,可以使用alpha混合、掩蔽和所有类型的纹理操纵技术,如果这是您想要的。要像GDI+一样操纵单个像素,我仍然认为GDI+是一种方法。DirectX从来都不适合做图像处理。

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


要计算纹理,可以使用alpha混合、掩蔽和所有类型的纹理操纵技术,如果这是您想要的。要像GDI+一样操纵单个像素,我仍然认为GDI+是一种方法。DirectX从来都不适合做图像处理。

我认为使用DirectX会更快,因为它使用了硬件加速。我不想把它渲染到屏幕上,只想调整它的大小并将其保存到磁盘上。缩放本身确实会更快,但纹理上传和屏幕像素回读的数据准备将超过使用硬件带来的所有性能好处。只有当你将同一个图像缩放百分之一百的时候,使用DirectX才有意义。我认为使用DirectX会更快,因为它使用了硬件加速。我不想把它渲染到屏幕上,只想调整它的大小并将其保存到磁盘上。缩放本身确实会更快,但纹理上传和屏幕像素回读的数据准备将超过使用硬件带来的所有性能好处。只有当你将同一个图像缩放数百倍时,使用DirectX才有意义。不,我不需要使用DirectX,我只是在寻找一个可能比GDI+更快的现实的替代方案。如果是这样的话,有很多库,比如imagemagick(),还有更多,但我现在记不起来。不,我不需要使用DirectX,我只是在寻找一个可能比GDI+更快的现实的替代方案。如果是这样的话,有很多库,比如imagemagick(),还有更多,但我现在想不起来了。