Advertisement

linux 64 loadBMP in tutorials

Started by August 02, 2011 10:52 AM
0 comments, last by rip-off 13 years, 3 months ago
First of all I want to thank about these fine openGL tutorials. Thanks! : )
I'm using 32 and 64 bit linux machines to compile ( Linux/GLX Code ). I faced with problem in loadBMP function on linux64. To be short the problem is in the following line ( starting from lesson06 ):
long int bfOffBits; and later in the function if (!fread(&bfOffBits, sizeof(long int), 1, file))

it's better to replace it with
int bfOffBits;
...
if (!fread(&bfOffBits, sizeof(bfOffBits), 1, file))

because:
linux32: sizeof( long int ) == 4
linux64: sizeof( long int ) == 8
and BMP file format assumes the field size ( File offset to Pixel Array ) to be 4 bytes.

Please correct me if I'm wrong.
Best regards.
From a quick Google, the type should be unsigned to start with.

It is better to replace it with a type that will always be 4 bytes, as there is no guarantee that an "unsigned int" will be this size. An example would be something like uint32_t.

This topic is closed to new replies.

Advertisement