hm... the bitmap stays black. here is my example:
(i only want to render to the bitmap once and not every frame.)
Code:
LPDIRECT3DDEVICE9 device = (LPDIRECT3DDEVICE9)pd3ddev;
LPDIRECT3DSURFACE9 pPreviousRenderTarget;
device->GetRenderTarget(0, &pPreviousRenderTarget);
LPDIRECT3DTEXTURE9 pTargetTexture;
D3DXCreateTexture(device, 512, 512, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &pTargetTexture);
((LPDIRECT3DTEXTURE9)mybmap->d3dtex)->Release();
((LPDIRECT3DTEXTURE9)mybmap->d3dtex) = pTargetTexture;
mybmap->flags = 1<<15 | 1<<27;
LPDIRECT3DSURFACE9 pRenderTarget;
pTargetTexture->GetSurfaceLevel(0, &pRenderTarget);
device->SetRenderTarget(0, pRenderTarget);
device->Clear(0, 0, D3DCLEAR_TARGET, 0x00000000, 1, 0);
// draw here
device->SetRenderState(D3DRS_LIGHTING, FALSE);
device->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE);
device->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_DISABLE);
device->SetFVF(D3DFVF_XYZRHW | D3DFVF_DIFFUSE);
DVERTEX v[3];
v[0].x = 0;
v[0].y = 0;
v[0].z = 0;
v[0].rhw = 1;
v[0].color = D3DCOLOR_RGBA(255, 255, 255, 0);
v[1].x = 512;
v[1].y = 0;
v[1].z = 0;
v[1].rhw = 1;
v[1].color = D3DCOLOR_RGBA(255, 255, 255, 0);
v[2].x = 512;
v[2].y = 512;
v[2].z = 0;
v[2].rhw = 1;
v[2].color = D3DCOLOR_RGBA(255, 255, 255, 0);
device->DrawPrimitiveUP(D3DPT_TRIANGLELIST, 1, (LPVOID)v, sizeof(DVERTEX));
D3DXSaveSurfaceToFile("test.jpg", D3DXIFF_JPG, pRenderTarget, 0, 0);
SAFE_RELEASE(pRenderTarget);
device->SetRenderTarget(0, pPreviousRenderTarget);
SAFE_RELEASE(pPreviousRenderTarget);