SDL没有绘制图像

时间:2013-01-03 12:31:52

标签: c++ visual-studio-2010 sdl

我目前正在使用SDL将图像绘制到屏幕上,它会加载图像而不会出现错误。但是当我将图像绘制到屏幕上时,没有显示任何内容。这是我的代码:

图像加载功能:

SDL_Surface *d2Sprite::Load(char *file)
{
SDL_Surface *temp = NULL;
SDL_Surface *opt = NULL;

if((temp = SDL_LoadBMP(file)) == NULL)
{
    cout << "Unable to load image '" << file << "'. " << SDL_GetError() << endl;
    return NULL;
}

opt = SDL_DisplayFormatAlpha(temp);
SDL_FreeSurface(temp);

return opt;
}

绘图功能:

bool d2Sprite::Draw(SDL_Surface *dest, SDL_Surface *src, int x, int y)
{
if(dest == NULL || src == NULL)
{
    cout << "Unable draw sprite! " << SDL_GetError() << endl;
    return false;
}

SDL_Rect destR;
destR.x = x;
destR.y = y;

SDL_BlitSurface(src, NULL, dest, &destR);

return true;
}

2 个答案:

答案 0 :(得分:1)

您没有设置用于布局的矩形的width and heightdestR

您应该检查blir操作的返回值,以确定它是否成功。

此外,您可能会遇到Alpha混合问题,因为您为曲面启用了alpha,但在执行此操作之前未设置它。请参阅SDL_BlitSurface()文档。

答案 1 :(得分:1)

在你对Draw()的所有调用之后,你是在调用SDL_Flip()吗?你需要这个来翻转后面的缓冲区(发生blitting的地方)和前面的缓冲区(屏幕上显示的内容)。