void Bitmap::ConvertToTexture(LPDIRECT3DDEVICE9 pD3DDevice, IDirect3DTexture9 **ppTexture, D3DSURFACE_DESC *pTextureDesc)
{
pD3DDevice->CreateTexture(pBitmapInfoHeader->biWidth, pBitmapInfoHeader->biHeight, 1, 0, D3DFMT_X8R8G8B8, D3DPOOL_MANAGED, ppTexture, NULL);
if (*ppTexture == NULL)
{
throw Exception(L"Bitmap::ConvertToTexture - Failed to create texture");
}
pTextureDesc->Width = pBitmapInfoHeader->biWidth;
pTextureDesc->Height = pBitmapInfoHeader->biHeight;
pTextureDesc->Format = D3DFMT_UNKNOWN;
D3DLOCKED_RECT d3dlr;
(*ppTexture)->LockRect(0, &d3dlr, 0, 0);
memcpy(d3dlr.pBits, pBitmapData + pBitmapFileHeader->bfOffBits, pBitmapInfoHeader->biWidth * pBitmapInfoHeader->biHeight * 4);
(*ppTexture)->UnlockRect(0);
}
Here is also a file to show what bitmap format I am dealing with.
https://dl.dropbox.c...03/Fireball.bmp
Here is what I did to fix it for now.
void Bitmap::ConvertToTexture(LPDIRECT3DDEVICE9 pD3DDevice, IDirect3DTexture9 **ppTexture, D3DSURFACE_DESC *pTextureDesc)
{
pD3DDevice->CreateTexture(pBitmapInfoHeader->biWidth, pBitmapInfoHeader->biHeight, 1, 0, D3DFMT_X8R8G8B8, D3DPOOL_MANAGED, ppTexture, NULL);
if (*ppTexture == NULL)
{
throw Exception(L"Bitmap::ConvertToTexture - Failed to create texture");
}
pTextureDesc->Width = pBitmapInfoHeader->biWidth;
pTextureDesc->Height = pBitmapInfoHeader->biHeight;
pTextureDesc->Format = D3DFMT_UNKNOWN;
D3DLOCKED_RECT d3dlr;
(*ppTexture)->LockRect(0, &d3dlr, 0, 0);
//memcpy(d3dlr.pBits, pBitmapData + pBitmapFileHeader->bfOffBits, pBitmapInfoHeader->biWidth * pBitmapInfoHeader->biHeight * 4);
PDWORD pdwDest = (PDWORD)d3dlr.pBits;
PDWORD pdwSrc = (PDWORD)(pBitmapData + pBitmapFileHeader->bfOffBits);
DWORD dwPixels = pBitmapInfoHeader->biWidth * pBitmapInfoHeader->biHeight;
for (int x = 0, rx = (dwPixels) - (pBitmapInfoHeader->biWidth); x < dwPixels; x += pBitmapInfoHeader->biWidth, rx -= pBitmapInfoHeader->biWidth)
{
memcpy(pdwDest + x, pdwSrc + rx, pBitmapInfoHeader->biWidth * 4);
}
(*ppTexture)->UnlockRect(0);
}
Edited by mojobojo, 17 November 2012 - 06:37 AM.






