witam, moj plik obslugujacy sie direct3d wyglada na razie tak (ucze sie)
#include <d3d9.h>
#include <d3dx9.h>
#include <d3dx9tex.h>
#pragma comment( lib, "d3d9.lib" )
#pragma comment( lib, "d3dx9.lib" )
LPDIRECT3D9 d3d;
LPDIRECT3DDEVICE9 d3ddev;
LPDIRECT3DSURFACE9 surface;
bool initDirect3D( HWND handleWnd )
{
D3DPRESENT_PARAMETERS d3dpp;
HRESULT hr;
d3d = NULL;
d3ddev = NULL;
d3d = Direct3DCreate9( D3D_SDK_VERSION );
if( d3d == NULL )
{
return false;
}
ZeroMemory( &d3dpp, sizeof( d3dpp ) );
d3dpp.Windowed = true;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;
d3dpp.BackBufferCount = 1;
d3dpp.BackBufferWidth = WINDOW_X;
d3dpp.BackBufferHeight = WINDOW_Y;
d3dpp.hDeviceWindow = handleWnd;
if( FAILED( d3d->CreateDevice( D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
handleWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp,
&d3ddev ) ) )
{
return false;
}
hr = D3DXLoadSurfaceFromFile( surface,
NULL,
NULL,
"surface.bmp",
NULL,
D3DX_DEFAULT,
0,
NULL );
if( FAILED( hr ) )
{
return false;
}
return true;
}
void renderDirect3D()
{
IDirect3DSurface9* backbuffer;
if( d3ddev == NULL )
{
return;
}
d3ddev->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB( 20, 20, 100 ), 1.0, 0 );
d3ddev->GetBackBuffer( 0,
0,
D3DBACKBUFFER_TYPE_MONO,
&backbuffer );
d3ddev->StretchRect( surface,
NULL,
backbuffer,
NULL,
D3DTEXF_NONE );
d3ddev->Present( NULL, NULL, NULL, NULL );
}
void cleanDirect3D()
{
d3ddev->Release();
d3d->Release();
}
Wszystko działa oprócz tla okna, surface, nie wiem jak to nazywa sie po polsku, po prostu, initDirect3D zwraca zawsze false, plik surface.bmp istnieje w tym samym folderze co exe