SDL_RenderSetScale 错误地应用于 SDL2 (2.0.3) 中的旋转位图

Ant*_*ist 6 scaling rotation sdl-2

SDL_RenderSetScale 将相应地缩放坐标,直到使用旋转 SDL_RenderCopyEx。SDL 似乎应用了缩放预旋转​​,因此旋转纹理的纵横比是错误的。例如,旋转 90 度的纹理将使 x 和 y 缩放相反。我试图计算一个公式来抵消这种缩放,但结果并不好。

我还注意到用 SDL_RenderDrawLine根据缩放比例绘制不同的粗细,但仍按屏幕像素绘制对角线。

有没有其他人有这个问题?有没有另一种方法来获得所需的结果?是否有任何计划修复 SDL2,使缩放效果始终保持一致?

Emi*_*ily 1

使用这段代码,恐怕我无法重现该问题:

\n\n
SDL_RenderSetScale(renderer, 4.0f, 4.0f);\n\nSDL_Rect rect = { 16, 16, 128, 128 };\nSDL_RenderCopyEx(renderer, tex, NULL, &rect, 90.0, NULL, SDL_FLIP_NONE);\n
Run Code Online (Sandbox Code Playgroud)\n\n

这工作得很好,图像旋转了 90\xc2\xb0,缩放了 4 倍。由于这是在我回复之前两年提出的,我认为这可能是 SDL 2.0.3 中的一个错误,因为我正在使用 SDL 2.0.5。

\n\n

无论如何,如果最新版本发生这种情况,也不是所有的希望都破灭了。使用的另一种方法SDL_RenderSetScale是简单地将目标矩形的宽度和高度乘以所需的比例,根据我的经验,这也同样有效。考虑到您要将矩形传递到SDL_RenderCopyEx,该函数在旋转时绝对应该记住这一点。

\n