Hi all
Having a few problems rendering my scene to another texture and then drawing that texture to screen. My aim is to eventually perform post-processing on the texture to provide effects such as nightvision.
Here are the steps I am following
1) Create the texture to render to and set the surface level
m_D3DDevice->CreateTexture(800,
600,
1,
D3DUSAGE_RENDERTARGET,
D3DFMT_A8R8G8B8,
D3DPOOL_DEFAULT,
&pRenderTexture,
NULL);
pRenderTexture->GetSurfaceLevel(0,&pRenderSurface);
2) Save a copy of the old render target and set the new surface as the render surface
m_D3DDevice->GetRenderTarget(0,&pBackBuffer);
m_D3DDevice->SetRenderTarget(0,pRenderSurface);
3) Clear the current render surface (to green)
m_D3DDevice->Clear(0,
NULL,
D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,
D3DCOLOR_XRGB(0,255,0),
1.0f,
0);
4) Render all objects in the scene
5) Reset the render target to its original surface and clear (to red)
m_D3DDevice->SetRenderTarget(0,pBackBuffer);
m_D3DDevice->Clear(0,
NULL,
D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,
D3DCOLOR_XRGB(255,0,0),
1.0f,
0);
6) Draw the texture containing the scene image to pBackBuffer
This is where I am stuck. At present I am declaring a d3dxsprite and using the following code
m_d3dSprite->Begin(NULL);
m_d3dSprite->Draw(pRenderTexture, NULL, NULL, &Vector3D(150.0f, 150.0f, 0.0f), D3DCOLOR_XRGB(255, 255, 255));
m_d3dSprite->End();
This is drawing a grabled image to screen (although in the right location). Am I missing any steps out or overlooking anything? Can this work using a sprite or do I need to somehow create a textured quad and align it with the camera view? If so...how? Or will this still present the same garbled texture to screen?
At the moment I have a red background with a slighly offset sprite of random colours.
Any help is greatly appreciated
Thanks