Skip to main content
GameDev.net gamedev.net
🔒 Locked

24BPP Bitmap-16BPP Surface SOLVED

Started by m4ster May 23, 2006 at 8:00 AM 2 replies 2.3k views
Original Post
m4ster
m4ster
Hi, At the moment I'm trying to load a 24bpp bitmap and convert it to a 16bpp Image(5R6G5B). But every time I try to start my programm windows gives me a critical error. Plz help my guys, otherwise I'm going to die... (xD) Here's the convert part...

for(int cY=0; cY < ddsd.dwHeight; cY++)
{
	for(int cX=0; cX < ddsd.dwWidth; cX++)
		{
		BYTE red   = pbyImage[(cY*nBMPPitch+cX)*3+0],
		     green = pbyImage[(cY*nBMPPitch+cX)*3+1],
		     blue  = pbyImage[(cY*nBMPPitch+cX)*3+2];

		pwSurface[cY*ddsd.lPitch/2+cX] = _RGB16BIT565(red,green,blue);
	}
}



And here is the macro definition

#define _RGB16BIT565(r,g,b) ((b & 31) + ((g & 63) << 5) + ((b & 31) << 11))



[Edited by - m4ster on June 14, 2006 12:52:08 PM]
Jack Sotac
Jack Sotac
Also
*((Uint16*)(pwSurface + (cY*ddsd.lPitch)+(cX*2))) = _RGB16BIT565(red,green,blue);
I am assuming:
ddsd.lPitch is the pitch of the 16bit surface
pwSurface is declared as an 8bit pointer
0xa0000000
m4ster
m4ster
Hey,

Thanks, Jack Sotac answer helped me a lot...

I made the mistake not to devide the Pitch by 2

Yours sinserelly
Damien K.

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.