我尝试按照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;
}
答案 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。 (: