gpt4 book ai didi

c++ - SFML:如何解决在 sfml 中旋转 Sprite 时 Sprite 质量下降的问题

转载 作者:行者123 更新时间:2023-11-28 04:17:58 26 4
gpt4 key购买 nike

下面链接中的图片包含 20 多张图片(每个 body 部位和盔甲类型都在单独的文件中)。这个角色在名为“Spriter”的软件中被动画化。该代码采用 spriter 的输出文件 (.scml),然后计算 body 部位和装甲部位的位置以及每一帧的旋转。

当没有旋转时,一切都顺利绘制,但当有旋转部分时, Sprite 绘制有点扭曲,如下面的 gif 所示:

这是 the gif

这个失真问题能解决吗?

最佳答案

这些瑕疵似乎是由于缺乏平滑而造成的,这对像素艺术来说很好,但对 vector 艺术和旋转的东西来说就不是那么好了。

要启用平滑,只需找到 sf::Texture (s) 每个 body 部位,并调用 setSmooth(true)在每一个上。

Official documentation here

区别在于当纹理坐标映射到纹理像素(或纹素 片段)将如何渲染em>).当您执行缩放、分数平移和旋转时,很容易发生这种错位。

启用平滑后,每个片段都通过插值几个最接近其计算纹理坐标的纹素来渲染。如果片段的纹理坐标落在纹素之间,那么您会看到发生少量混合。

否则,在禁用平滑的情况下,每个片段仅通过选择最接近其计算的纹理坐标的单个纹素来渲染,并且不执行插值。在这种情况下,当片段的纹理坐标落在纹素之间时,只需选择一个或另一个纹素。这会导致您看到锯齿状、 block 状的旋转伪影。

请注意,对于密集排列的 spritesheet 之类的东西,平滑可能会产生相邻纹理数据“渗入”当前 sprite 的效果。

关于c++ - SFML:如何解决在 sfml 中旋转 Sprite 时 Sprite 质量下降的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56157231/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com