How do I load a bitmap without using AUX ?

Ive been following NeHe and created my own basecode and im now going to make a bitmap loading function and need to know how to load butmaps cause it think his method uses the aux library!

2 solutions : either you implement it yourself, or you use a library to handle this (a library that is more recent than AUX of course).

To implement it yourself : get the bmp format specification, and follow carefully the guidelines. You can find the spec from programming sites such as http://www.wotsit.org .

To use a library : well, quite simple. Find a good library (ie, a library that has the functionality you need, not necessarily a library that makes your coffee…). You can find tons of loaders for bmp : search with google, you will have choice. A good image library can be found at : http://www.imagelib.org . It handles reading/writing of many formats (bmp, tga, jpg, png and others). It has other functions such as scaling, color conversion etc. Maybe a bit heavy if your only goal is to load a bitmap for texturing.

I have had real problems using Nehe’s bitmap loader so I found another tutorial where the loading was done by reading the bitmap header and the rest of the other info, and creating the texture from there.

I cant find the code now but if I remember (and you still need it) I will post it tommorow.

If you dont mind that code might help , i didnt have problems with NeHe’s but ive heard bad stuff about the aux library so i would prefer not to have to use it

I also changed the code to check if the file uses the colour my files use for key coloring, if so it adds the alpha channel and sets the alpha to 1 where the colour matches. Very useful for me!

I recently had to learn how to load images from files. I am now using a library and dealing with TIFFs, but initially I figured out how to read and display bitmaps.

Here’s the code I wrote:

	// pointer to bitmap
	PUCHAR bitmap ;

	// Bitmap file headers
	BITMAPFILEHEADER bmFile ;
	BITMAPINFOHEADER bmInfo ;

	// Bitmap file handle
	CFile hFile ;

	// Bitmap size
	DWORD size ;

	// Open it
	BOOL bLeft = fileLeft.Open( "test.bmp", 
		CFile::modeRead | CFile::shareExclusive | CFile::typeBinary ) ;

	if ( ! bLeft )
	{
		// could not open file - handle error
	}

	// Get bitmap file headers
	hFile.Read( (void*)(&bmFile), sizeof(bmFile) ) ;
	hFile.Read( (void*)(&bmInfo), sizeof(bmInfo) ) ;

	// Get size of bitmap
	size = bmInfo.biSizeImage ;

	// Store bitmap dimensions
	bmWidth = bmInfo.biWidth ;
	bmHeight = bmInfo.biHeight ;

	// Read in bitmap
	bmLeft = new UCHAR[ size ] ;
	fileLeft.Read( (void*)bitmap, (UINT)size ) ;

	fileLeft.Close() ;

I found a lot of info online about the BMP format, and I should mention that I’m not 100% certain this will work for all bitmaps. My bitmaps are 24-bit in DIB format and I haven’t had any problems.

If you decide to write your own loader, it’s a start. Good luck.

-tom

ps. I should point out that I’m using MFC. I’m sorry. Trust me, it wasn’t my idea. But the concept is the same.

[This message has been edited by kanet77 (edited 03-19-2003).]

Sorry guzba.

Slight error on my part, my BITMAP loader does use AUX. Its my TGA loader I was thinking of.

Sorry about that. Lucky kanet77 was on the ball.