1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
//Création de mes objets pour le render to texture
LPDIRECT3DTEXTURE9 _Texture = NULL;
LPDIRECT3DSURFACE9 _RenderSurface = NULL, _BackBuffer = NULL;
Device->CreateTexture(1024, 768, 1, D3DUSAGE_RENDERTARGET, D3DFMT_X8R8G8B8, D3DPOOL_DEFAULT, &_Texture, NULL);
_Texture->GetSurfaceLevel(0, &_RenderSurface);
//Je récupère l'ancien Render Target
Device->GetRenderTarget(0, &_BackBuffer);
//Je définie le nouveau
Device->SetRenderTarget(0, _RenderSurface);
//Je pose ma caméra pour le rendu de la scène
Device->SetTransform(D3DTS_VIEW, &Camera->GetViewMatrix());
Device->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DXCOLOR(0.8f, 0.8f, 0.8f, 1.0f), 1.0f, 0);
Device->BeginScene();
//Affichage de ma scène, mesh, primitives, shaders etc...
Device->EndScene();
//Je remets l'ancien Render Target
Device->SetRenderTarget(0, _BackBuffer);
//Je Change la texture en mémoire du Quad "RenderQuad" utilisé plus bas
RenderToTexture->ChangeTexture(0, _Texture);
//Je pose ma caméra pour le quad
Device->SetTransform(D3DTS_VIEW, &CameraQuad->GetViewMatrix());
Device->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DXCOLOR(0.8f, 0.8f, 0.8f, 1.0f), 1.0f, 0);
Device->BeginScene();
//Rendu du quad avec la texture
RenderQuad.Render();
Device->EndScene();
Device->Present(0, 0, 0, 0);
//Et quelques releases obligatoires.
_BackBuffer->Release();
_RenderSurface->Release();
} |
Partager