我该如何在SDL中缩放精灵?
您没有提供任何代码,因此我假设您正在使用纹理和SDL_Renderer:
使用SDL_RenderCopy()时,纹理将被拉伸以适应目标SDL_Rect,因此如果您使目标SDL_Rect较大或较小,则可以对纹理进行简单的缩放。
来自Ibrahim CS的解决方案可行。
让我在这个解决方案的基础上进行扩展并提供代码。 另一个需要注意的是,通过以左上角为原点计算新位置(x,y)以呈现缩放纹理。
我是这样做的
// calculate new x and y
int new_x = (x + texture->w/2) - (texture->w/2 * new_scale);
int new_y = (y + texture->h/2) - (texture->h/2 * new_scale);
// form new destination rect
SDL_Rect dest_rect = { new_x, new_y, texture->w * scale, texture->h * scale };
// render
SDL_RenderCopy(renderer, texture, NULL, &dest_rect);
texture
是SDL_Texture
,renderer
是SDL_Renderer
,您需要从输入纹理完全渲染到目标位置。