【发布时间】:2018-02-02 13:03:19
【问题描述】:
我可以使用D3DXCreateTextureFromFile 来加载图像,并使用D3DXSaveTextureToFile 来保存它,但是如何调整它的大小?我应该使用IDirect3DDevice9::SetRenderTarget 并渲染到纹理吗?
比在 CPU 上做的慢吗?
【问题讨论】:
标签: directx direct3d directx-9 direct3d9
我可以使用D3DXCreateTextureFromFile 来加载图像,并使用D3DXSaveTextureToFile 来保存它,但是如何调整它的大小?我应该使用IDirect3DDevice9::SetRenderTarget 并渲染到纹理吗?
比在 CPU 上做的慢吗?
【问题讨论】:
标签: directx direct3d directx-9 direct3d9
通常,您可以使用 GPU 将图像作为“全屏四边形”绘制到设置为目标大小的渲染目标上,从而“调整”图像的大小。根据所涉及的大小和数据,通过 GPU 传送它然后依靠回读将其传送到磁盘可能会更慢,因此在 CPU 上执行它通常是更好的方法。我相信您正在使用的旧的已弃用 D3DX9 实用程序库可以使用 D3DXLoadSurfaceFromSurface 调整大小。
您不应将 Direct3D 9 和/或旧版
D3DX9库用于新项目。见MSDN和Living without D3DX
更好的解决方案是直接使用 Windows Imaging Component 加载图像、调整图像大小并保存缩略图。有关使用 WIC 的大量示例代码,请参阅 DirectXTex。
【讨论】: