****FIXED__******,原来我的位图文件被破坏了。我可以打开文件查看它,但我的应用程序不能。我做了一个新的图像,它运行良好。
我在sdl中显示位图图像时有问题。程序以代码2退出,所以我知道位图没有加载。我在windows 7 64位上使用vc2010。BMP的名称是hello.bmp,我试着将它放在应用程序文件、源文件和项目文件的旁边,但它仍然不会加载它。我还试着把它放在c:\中,然后从那里加载,没有任何结果。这是我第一次尝试使用SDL。以下是代码:
#include "stdlib.h"
#include "SDL.h"
int main(int argc, char *argv[])
{
SDL_Surface *screen; //This pointer will reference the backbuffer
SDL_Surface *image; //This pointer will reference our bitmap sprite
SDL_Surface *temp; //This pointer will temporarily reference our bitmap sprite
SDL_Rect src, dest; //These rectangles will describe the source and destination regions of our blit
//We must first initialize the SDL video component, and check for success
if (SDL_Init(SDL_INIT_VIDEO) != 0) {
printf("Unable to initialize SDL: %s\n", SDL_GetError());
return 1;
}
//When this program exits, SDL_Quit must be called
atexit(SDL_Quit);
//Set the video mode to fullscreen 640x480 with 16bit colour and double-buffering
screen = SDL_SetVideoMode(640, 480, 16, SDL_DOUBLEBUF | SDL_FULLSCREEN);
if (screen == NULL) {
printf("Unable to set video mode: %s\n", SDL_GetError());
return 1;
}
//Load the bitmap into a temporary surface, and check for success
temp = SDL_LoadBMP("hello.bmp");
if (temp == NULL) {
printf("Unable to load bitmap: %s\n", SDL_GetError());
return 2;
}
//Convert the surface to the appropriate display format
image = SDL_DisplayFormat(temp);
//Release the temporary surface
SDL_FreeSurface(temp);
//Construct the source rectangle for our blit
src.x = 0;
src.y = 0;
src.w = image->w; //Use image->w to display the entire width of the image
src.h = image->h; //Use image->h to display the entire height of the image
//Construct the destination rectangle for our blit
dest.x = 100; //Display the image at the (X,Y) coordinates (100,100)
dest.y = 100;
dest.w = image->w; //Ensure the destination is large enough for the image's entire width/height
dest.h = image->h;
//Blit the image to the backbuffer
SDL_BlitSurface(image, &src, screen, &dest);
//Flip the backbuffer to the primary
SDL_Flip(screen);
//Wait for 2500ms (2.5 seconds) so we can see the image
SDL_Delay(2500);
//Release the surface
SDL_FreeSurface(image);
//Return success!
return 0;
}发布于 2012-01-10 15:07:40
您正在加载位图。因此,如果您使用的是,那么有一个简单的修复方法。转到add new file,然后单击resource。您可以在visual studio中创建一个位图文件。因此,复制位图,然后单击visual studio上的编辑,将位图平平打开,然后单击“粘贴”。完成后,将图像的名称更改为代码中的图像,这样就可以很好地工作,因为没有链接问题。
https://stackoverflow.com/questions/6511491
复制相似问题