I try a simple blitting in the with the d3d libriaries, but I fail.
Please help me, I have no Idea where my fault is.
The Debuger gives me this little help, but I don't know why.
Direct3D9: (ERROR) :Source and dest surfaces are different formats.
UpdateSurface fails
I load a limple bitmap, first it was a 24bit now its 2bit and dosn't
work :-)
Thanks very much for your help.
Gilbert
LPDIRECT3D9 g_pD3D = NULL;
LPDIRECT3DDEVICE9 g_pd3dDevice = NULL;
D3DFORMAT m_Format;
LPDIRECT3DSURFACE9 m_pSurface;
LPDIRECT3DSURFACE9 g_pBackSurface;
HRESULT InitD3D( HWND hWnd )
{
HRESULT hr;
if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )
return E_FAIL;
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory( &d3dpp, sizeof(d3dpp) );
d3dpp.Windowed = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;
if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL,
hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &g_pd3dDevice ) ) )
return E_FAIL;
if (FAILED (hr = g_pd3dDevice->CreateOffscreenPlainSurface(640, 480,
D3DFMT_R5G6B5 , D3DPOOL_DEFAULT, &m_pSurface, NULL)))
return hr;
if (FAILED (hr =
D3DXLoadSurfaceFromFile(m_pSurface,NULL,NULL,"32bits.bmp",NULL,D3DX_FILTER_NONE,
0,NULL )))
return hr;
return S_OK;
}
HRESULT Render()
{
HRESULT hr;
if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
{
if(!g_pd3dDevice)
return E_FAIL;
g_pd3dDevice->Clear(0,0, D3DCLEAR_TARGET, D3DCOLOR_XRGB(66,66,66),
0.0f, 0);
if(FAILED(hr = g_pd3dDevice->GetBackBuffer(0, 0,
D3DBACKBUFFER_TYPE_MONO, &g_pBackSurface)))
return hr;
if (FAILED (hr = g_pd3dDevice->UpdateSurface(m_pSurface, NULL,
g_pBackSurface, NULL)))
return hr;
g_pd3dDevice->EndScene();
g_pBackSurface->Release();
}
else
return E_FAIL;
g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
return S_OK;
}