Advertisement

Mangled bitmaps when blitting sprite in video memory!

Started by March 12, 2000 09:29 PM
-1 comments, last by Peregrine 25 years ago
Help! I am unable to get sprites (BOB's) to display properly when loaded into VRAM using the following code. Only those of 800x600 the resolution that my game is set at - will display properly; almost all other types of bitmaps will be severly mangled. However, when loaded into system memory, everything is perfect (but slow). This is code from a slightly modified version of Andre Lamothe's WGPDUMB game engine running in 16-bit colour. Can anyone tell me what's wrong? int Create_BOB(BITMAP_OBJ_PTR bob, // the bob to create int width, int height) // size of BOB { // Create the BOB object, note that all BOBs // are created as offscreen surfaces in VRAM as the // default, if you want to use system memory then // set flags equal to DDSCAPS_SYSTEMMEMORY DDSURFACEDESC ddsd; // used to create surface if (bob->status == BOB_CREATED) // Destroy the BOB if it has already Destroy_BOB (bob); // been created // set state and attributes of BOB bob->image = NULL; // set position to 0 bob->x = bob->y = 0; // set to access caps, width, and height memset(&ddsd,0,sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); ddsd.dwFlags = DDSD_CAPS / DDSD_WIDTH / DDSD_HEIGHT; // set dimensions of the new bitmap surface ddsd.dwWidth = bob -> surfaceWidth = bob->width = width; ddsd.dwHeight = bob -> surfaceWidth = bob->height = height; // set surface to offscreen plain ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN; // Try to store in VRAM if it won't be mangled // create the surface // if (lpdd->CreateSurface(&ddsd,&(bob->image),NULL)!=DD_OK) // return(0); // set color key to bright pink DDCOLORKEY colour_key; // used to set color key colour_key.dwColorSpaceLowValue = rgb16bpp (31,0,31); colour_key.dwColorSpaceHighValue = rgb16bpp (31,0,31); // now set the color key for source blitting (bob->image)->SetColorKey(DDCKEY_SRCBLT, &colour_key); // Make the whole bitmap invisible FillSurface(bob->image, colour_key.dwColorSpaceLowValue); bob->status = BOB_CREATED; // return success return(1); } // end Create_BOB Edited by - Peregrine on 3/12/00 11:38:20 PM

This topic is closed to new replies.

Advertisement