如何正确地缩放SDL表面?我在网上找到了一个解释,但它需要逐像素重新绘制表面。似乎应该有一些通过SDL本身实现而不是像那样重新绘制图像的方法。我在SDL文档中没有找到涵盖此内容的任何信息。我可以通过修改表面的宽度和高度轻松地调整表面大小,但结果表面被裁剪。
为了完整性,因为问题没有指定SDL版本,可以使用API方法SDL_RenderCopyEx
在SDL2中进行缩放。除了基本的SDL2库之外,不需要其他库。
int SDL_RenderCopyEx(SDL_Renderer* renderer,
SDL_Texture* texture,
const SDL_Rect* srcrect,
const SDL_Rect* dstrect,
const double angle,
const SDL_Point* center,
const SDL_RendererFlip flip)
dstrect
的大小,可以将纹理缩放为整数像素。同时也可以旋转和翻转纹理。surface = IMG_Load(filePath);
texture = SDL_CreateTextureFromSurface(renderer, surface);
SDL_RenderCopyEx
而不是SDL_RenderCopy
。