Original Post
Im trying to implement a DX8 Sprite3D system in my app, but
why does my app crash when it gets to the ->draw function?
// Sprite creation function:
bool CreateSprite()
{
HRESULT hr;
// Create the 3D sprite.
hr = D3DXCreateSprite(lpD3DDevice, &lpD3DXSprite);
if(FAILED(hr))
{
return FALSE;
}
lpDDSSrc = DDLoadBitmap3D( "sprite1.bmp");
if(lpDDSSrc == NULL)
{
return FALSE
}
return TRUE;
}
LPDIRECT3DTEXTURE8 DDLoadBitmap3D( char *szBitmap )
{
LPDIRECT3DTEXTURE8 lpDDSTemp;
HRESULT hr;
hr = D3DXCreateTextureFromFile( lpD3DDevice, szBitmap,
&lpDDSTemp );
// The below code doesnt work in DX8 anymore.
// hr = D3DXCreateTextureFromFile(
// lpD3DDevice,
// NULL, // dwFlags
// NULL, // auto-width
// NULL, // auto-height
// NULL, // auto-surface type
// NULL, // pointer to Palette
// &lpDDSTemp, // pointer
// NULL, // mip-maps
// szBitmap, // file name for texture
// D3DX_FT_DEFAULT); // default scaling
if(FAILED(hr))
{
return NULL;
}
return lpDDSTemp;
}
HRESULT Blit()
{
HRESULT hr = lpD3DDevice->BeginScene();
RECT rcSrc = SetRect(0,0,64,64);
if( FAILED( hr ) )
{
return hr;
}
// Clear the display
lpD3DDevice->Clear( 0L, NULL,
D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER,
0L, 1.0f, 0L );
// CRASHES HERE...
hr = lpD3DXSprite->Draw(lpDDSSrc ,
rcSrc,
NULL,
NULL,
0.0f,
NULL,
0x00000000);
// End the scene.
lpD3DDevice->EndScene();
// Display the backbuffer.
lpD3DDevice->Present( 0, 0, 0, 0 );
return hr;
}