Directx 如何拉伸ID3D11Texture2D的子区域?

Directx 如何拉伸ID3D11Texture2D的子区域?,directx,Directx,我的组件有一个源ID3D11Texture2D缓冲区,在大多数情况下,我使用ID3D11DeviceContext::CopyResource将其复制到一个临时ID3D11Texture2D缓冲区。这两个缓冲区大小相同 有时,我只想将源缓冲区的一个矩形子区域复制到暂存缓冲区中,并拉伸它,使暂存缓冲区的大小保持不变。矩形子区域与源具有相同的纵横比 暂存缓冲区从不用于渲染。它最终会保存到媒体文件。您可以使用CopySubresourceRegion,不过您应该查看上的备注以了解一些已知问题。至于拉伸

我的组件有一个源ID3D11Texture2D缓冲区,在大多数情况下,我使用ID3D11DeviceContext::CopyResource将其复制到一个临时ID3D11Texture2D缓冲区。这两个缓冲区大小相同

有时,我只想将源缓冲区的一个矩形子区域复制到暂存缓冲区中,并拉伸它,使暂存缓冲区的大小保持不变。矩形子区域与源具有相同的纵横比

暂存缓冲区从不用于渲染。它最终会保存到媒体文件。

您可以使用CopySubresourceRegion,不过您应该查看上的备注以了解一些已知问题。至于拉伸,Direct3D 11中没有StretchBits样式的API,但如果您首先将其复制到纹理,则可以使用GPU上的“渲染到纹理”,或者可以使用基于CPU的解决方案,如WIC。@Chuck,我查看了CopySubresourceRegion,它通过复制我想要的源缓冲区部分完成了一半的工作。至于在GPU上拉伸它,ID3D11Texture2D缓冲区不是已经是纹理了吗?早些时候,我在C中找到了一个CPU解决方案,但是我更喜欢只使用C++和GPU来进行这些操作。