0

我目前正在使用 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;
}
4

2 回答 2

1

您没有设置用于 blitting 的矩形的宽度和高度destR, .

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

此外,您可能会遇到 alpha 混合问题,因为您为表面启用了 alpha,但在此之前没有设置它。请参阅SDL_BlitSurface()文档。

于 2013-01-03T12:36:05.013 回答
1

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

于 2013-01-03T16:29:34.753 回答