SDL不绘制图像

SDL Not Drawing Image

本文关键字:图像 绘制 SDL      更新时间:2023-10-16

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

您没有设置用于比特化的矩形的宽度和高度,destR

你应该检查blir操作的返回值来判断它是否成功。

同样,你可能会遇到alpha混合的问题,因为你为表面启用了alpha,但在此之前没有设置它。参考SDL_BlitSurface()文档

是否在调用Draw()之后调用SDL_Flip() ?您需要它来翻转后缓冲区(发生比特化的地方)和前缓冲区(屏幕上显示的内容)。