1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | FileType 2624998722 unsigned __int64 FileSize 3538944 unsigned int Reserved1 28147497673687040 unsigned __int64 Reserved2 281474983264256 unsigned __int64 BitmapOffset 32 unsigned int Size 0 unsigned int Width 185729024 int Height 185729024 int Planes 0 unsigned __int64 BitsPerPixel 18446742974197923840 unsigned __int64 Compression 4294967295 unsigned int SizeOfBitmap 4294967295 unsigned int HorzResolution -1 int VertResolution -1 int ColorsUsed 4294967295 unsigned int ColorsImportant 4294967295 unsigned int RedMask 4294967295 unsigned int GreenMask 4294967295 unsigned int BlueMask 4294967295 unsigned int |
For example, HxW should be 100x100. And yes, I used #pragma pack(push, 1)/#pragma pack(pop) on
bitmap_header.
For completness I also include the DEBUGLoadBMP() code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | internal loaded_bitmap DEBUGLoadBMP(thread_context *Thread, debug_platform_read_entire_file *ReadEntireFile, char *FileName) { loaded_bitmap Result = {}; // NOTE(casey): Byte order in memory is AA BB GG RR, bottom up. // In little endian -> 0xRRGGBBAA debug_read_file_result ReadResult = ReadEntireFile(Thread, FileName); if(ReadResult.ContentsSize != 0) { bitmap_header *Header = (bitmap_header *)ReadResult.Contents; uint32 *Pixels = (uint32 *)((uint8 *)ReadResult.Contents + Header->BitmapOffset); Result.Pixels = Pixels; Result.Width = Header->Width; Result.Height = Header->Height; uint32 *SourceDest = Pixels; for (int32 Y = 0; Y < Header->Height; ++Y) { for (int32 X = 0; X < Header->Width; ++X) { /* 0xRRGGBBAA -> 0xAARRGGBB*/ *SourceDest = (*SourceDest >> 8) | (*SourceDest << 24); ++SourceDest; } } } return(Result); } |
Any clue?
Thanks in advance.