Address Issues

Started by
0 comments, last by ProPuke 19 years, 3 months ago

error C2664: 'NeHeLoadBitmap' : cannot convert parameter 2 from 'unsigned int *' to 'unsigned int &'
        A reference that is not to 'const' cannot be bound to a non-lvalue

I'm not too sure what to pass as the second parameter to this function:

bool NeHeLoadBitmap(LPTSTR szFileName, GLuint &texid)					// Creates Texture From A Bitmap File
{
	HBITMAP hBMP;														// Handle Of The Bitmap
	BITMAP	BMP;														// Bitmap Structure

	glGenTextures(1, &texid);											// Create The Texture
	hBMP=(HBITMAP)LoadImage(GetModuleHandle(NULL), szFileName, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE );

	if (!hBMP)															// Does The Bitmap Exist?
		return FALSE;													// If Not Return False

	GetObject(hBMP, sizeof(BMP), &BMP);									// Get The Object
																		// hBMP:        Handle To Graphics Object
																		// sizeof(BMP): Size Of Buffer For Object Information
																		// &BMP:        Buffer For Object Information

	glPixelStorei(GL_UNPACK_ALIGNMENT, 4);								// Pixel Storage Mode (Word Alignment / 4 Bytes)

	// Typical Texture Generation Using Data From The Bitmap
	glBindTexture(GL_TEXTURE_2D, texid);								// Bind To The Texture ID
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);	// Linear Min Filter
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);	// Linear Mag Filter
	glTexImage2D(GL_TEXTURE_2D, 0, 3, BMP.bmWidth, BMP.bmHeight, 0, GL_BGR_EXT, GL_UNSIGNED_BYTE, BMP.bmBits);

	DeleteObject(hBMP);													// Delete The Object

	return TRUE;														// Loading Was Successful
}

Source from nehe.gamedev.net For the first parameter, I pass a string. For the second, I tried this:

...
GLuint texture = 1;
NeheLoadBitmap("string", &texture);

But this is not working. So what should I pass as the second parameter?
Advertisement
& means reference so you don't have to pass it the address...
NeheLoadBitmap("string", texture);
...is sufficient.
References are not duplicated inside functions when used as parameters. They enable the function to modify the actual variables you pass in to it.
It's a c++ feature so you don't have to do it the C way of pointers
(not feeling like explaining alot today I'm afraid)
But definately start using them, they're cool ;]

[Edited by - ProPuke on January 17, 2005 11:38:08 AM]
_______________________________ ________ _____ ___ __ _`By offloading cognitive load to the computer, programmers are able to design more elegant systems' - Unununium OS regarding Python

This topic is closed to new replies.

Advertisement