C ++ - SDL无法正常工作

时间:2010-06-08 16:34:27

标签: c++ sdl

我尝试按照this教程了解使用SDL显示图像的基础知识。但是,当我运行程序时,它返回一个空白屏幕。图像位于正确的目录中,但不会显示在程序中。难道我做错了什么?我真的很喜欢SDL。

修改

这是我的代码:

#include <SDL/SDL.h>

using namespace std;

int main(int argc, char *argv[])
{
    SDL_Surface *hello;
    SDL_Surface *screen;
    SDL_Init(SDL_INIT_EVERYTHING);
    screen = SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE);
    hello = SDL_LoadBMP("hello.bmp");
    SDL_BlitSurface(hello, NULL, screen, NULL);
    SDL_Flip(screen);
    SDL_Delay(2000);
    SDL_FreeSurface(hello);
    SDL_Quit();
    return 0;
}

5 个答案:

答案 0 :(得分:2)

使用SDL_GetError()找出SDL_LoadBMP()无法加载位图的原因。 另请阅读此thread

答案 1 :(得分:1)

我以为我说我几个月前已经修好了,好像我没有。我再次重新编译它,它很有用,非常奇怪。

答案 2 :(得分:1)

而不是SDL_Flip(screen)尝试使用SDL_UpdateRect(screen,0,0,0,0)

答案 3 :(得分:0)

确保hello.bmp在您当前的目录中,并且它是一个可读且有效的BMP文件。

答案 4 :(得分:0)

在第"hello = SDL_LoadBMP("hello.bmp");"行中,请尝试"/hello.bmp"而不是"hello.bmp"。我有同样的问题,但似乎在文件名之前放斜杠(“/”)有助于查找,因此渲染图像,即使它与程序不在同一目录中。

如果您使用的是Windows而不是"/hello.bmp",请写"c://hello.bmp"。第一个是Mac。 (:

编辑:忘记它,我只是意识到它实际上不起作用,因为我在磁盘目录中有文件,所以它对我有效。