Setting the BackBuffer

arva

Newcomer
Hi, I've been searching how to change the main Back Buffer and unfortunatelly didn't find anything helpful. Basicly I need to change the main pointer to a BackBuffer to a pointer of a surface compatible with the back buffer format. The idea is to get some frames from the main stream and anylyze data in them without using lock methods that are lowing the performance.

So I will:

1.Switch pointers of BackBuffer and my surface.
2.Anylyze data in BackBuffer.
3.Wait 0.5s
4.Switch back the pointers.
5.Analyze data in my surface.
6.Wait 0.5s
7.Switch pointers of BackBuffer and my surface.
8.Anylyze data in BackBuffer.
...

I need only to point me. And maybe also some suggestions about setting my surface format compatible with BackBuffer format. I'm writing my code in C++, DirectX 9.
 
You can't change the backbuffer AFAIK. What API are you using btw? Can't you just use another render target?
 
I can do that. Thanks:p. But Does the GetBackBuffer(UINT iSwapChain,UINT BackBuffer, D3DBACKBUFFER_TYPE Type, IDirect3DSurface9 ** ppBackBuffer)
method returns only the pointer to Back Buffer or it copyies a whole surface? And when I'm accessing the surface that GetBackBuffer method
returned me do I have any possibility to avoid locking the surface?(In fact I don't know how the mechanism of locking surface works). What will happen If
I don't lock the surface? The compilator threats this like a mistake?
 
GetBackBuffer() only returns the resource pointer to the backbuffer. It doesn't access the data in any way.
Instead of locking the backbuffer directly, which would lead to a stall, you can use GetRenderTargetData() to copy to a surface and then wait a few frames before you lock that surface to make sure that the data is available to avoid the stall.
 
I'm afraid that it would be too slow:/ I need to get 3-4 frames per second and have a direct access to their pixels. Somebody adviced me setting an offscreen surface as a rander target and my actual render target(Back Buffer) as a texture. Then I would be able to get pixel colours via pixel shader. I've read some tutorials about pixel shader but unfortunatelly I still don't know how to get them by pixel shader. Can somebody point me?
 
Back
Top