我目前正在使用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;
}
答案 0 :(得分:1)
您没有设置用于布局的矩形的width and height,destR
。
您应该检查blir操作的返回值,以确定它是否成功。
此外,您可能会遇到Alpha混合问题,因为您为曲面启用了alpha,但在执行此操作之前未设置它。请参阅SDL_BlitSurface()
文档。
答案 1 :(得分:1)
在你对Draw()的所有调用之后,你是在调用SDL_Flip()吗?你需要这个来翻转后面的缓冲区(发生blitting的地方)和前面的缓冲区(屏幕上显示的内容)。