Hi,
I am writing a program with Direct3D 9Ex. In certain requirement I have to copy (not stretch) a rectangle of a render target surface (which has something rendered) into the same surface, possibly overlapped. SctrechRect clearly does not support it; setting the render target as a texture and render to itself does not work either. So what is the fastest way to do it? I am aware that I can create a staging surface and does two copy operations but it looks really silly. In my program such operation has to be done multiple times per frame so I want to know if there's a faster way.
Thanks!
copy contents within the same surface
Your only option with D3D9 is to copy to an intermediate texture first, and then read from that when writing to the original render target texture.
Your only option with D3D9 is to copy to an intermediate texture first, and then read from that when writing to the original render target texture.
Thanks! So is it possible in D3D11? If so I could setup a D3D11 context and share the resource to it. But when I read MSDN it says CopySubresourceRegion in D3D11 also has to be done between different subresources.
In D3D11 you can use unordered access views for read and write access to a texture from a pixel or compute shader. However you have to be careful about cross-thread synchronization, although in your case you should be okay as long as any given output pixel is only read from and written to by a single thread.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement