사용자 삽입 이미지

D3DXCreateRenderToSurface 함수에 대한 설명은 msdn이나 Directx 문서에 잘 나와있으니 생략하고 일단 D3DXCreateRenderToSurface함수를 이용해서 텍스쳐에 그려주려면 일단
LPD3DXRENDERTOSURFACE   g_pRenderToSurface;
LPDIRECT3DTEXTURE9           g_pTexture;
LPDIRECT3DSURFACE9          g_pSurface;

와 같은 3개의 개체가 필요하다. 위의 개체 말고도 여러가지 부수적인 것들도 필요하지만 설명을 위한 필수 항목만 언급하겠다.


위의 3개체 가 선언 되었다면 D3DXCreateRenderToSurface 함수를 이용해 RenderToSurface개체를 얻고 D3DXCreateTexture함수로 그려질수 있는 텍스쳐개체를 얻어온다. 그리고 GetSurfaceLevel함수를 사용해서 서페이스에 그려지는걸 텍스쳐에 그대로 옮기도록 설정한다.
D3DXCreateRenderToSurface(g_pd3dDevice, 256, 256, D3DFMT_A8R8G8G8, TRUE, D3DFMT_D24S8, &g_pdRenderToSurface);
D3DXCreateTextureg_pd3dDevice, 256, 256, 0, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &g_pTexture);
g_pTexture->GetSurfaceLevel(0, &g_pSurface);

초기화가 됐으면 이제 surface에 그려주면 된다.
g_pRenderToSurface->BeginScene(g_pSurface, NULL);
g_pd3dDevice->clear(...)
//여기에 surface(texture)에 그려질 부분을 렌더링
해주면 된다
g_pRenderToSurface->EndScene(0);

이제 texture에 그려진 장면을 정점을 잡아서 uv좌표에 맞춰서 랜더링 해주면 된다. 여기서 가장 중요한건 RenderToSurface를 만들거나 Texture를 만들때 format이랑 width, height를 꼭 맞춰 주어야 한다. 심지어 텍스쳐를 입힐 사각형의 크기도 width, height를 맞춰 주어야 한다.
Posted by hazeyun
,