SFML:在旋转SFML的精灵时,如何解决精灵质量下降
SFML: How to solve sprite quality drop when rotating a sprite in sfml
下面链接上的图像由20多个图像组成(每个身体部位和装甲型在单独的文件中(。此字符在称为" Spriter"的软件中为动画。该代码获取Spriter的输出文件(.scml(,然后计算每个帧的身体部位和装甲零件的位置和旋转。
当没有旋转时,一切都会顺利地绘制,但是当旋转零件时,精灵会被绘制一些扭曲,如下面的GIF:
这是gif
可以解决此失真问题吗?
这些文物似乎是由于缺乏平滑性,这对于像素艺术非常有用,但对于向量艺术和旋转的事物来说不是很好。
要启用平滑,只需找到每个身体部位的sf::Texture
(s(,然后在每个身体上调用setSmooth(true)
。
这里的官方文件
区别在于,当纹理协调其映射到纹理像素(或 dexels 。当您执行缩放,分数翻译和旋转时,这种错位很容易发生。
平滑打开后,每个片段都是通过插值的几个接近其计算出的纹理坐标的插值来渲染的。如果片段的纹理坐在纹理之间,则会看到少量的混合发生。
否则,在禁用平滑的情况下,每个片段都是通过选择最接近其计算出的纹理坐标的单个Texel来渲染的,并且不执行插值。在这种情况下,当碎片的纹理坐在texels之间时,选择了一个或另一个texel。这导致您看到的锯齿状,块状的旋转伪像。
请注意,对于诸如密集包装的spriteSheets之类的东西,平滑可以将相邻纹理数据"出血"带入当前精灵。
相关文章:
- 从精灵表在 sfml 中为精灵制作动画
- 如何在精灵表上的两个不同部分之间来回切换,同时用户仍使用 SFML 持有密钥
- 如何在 SFML 上添加更多精灵?
- 为什么该代码不绘制精灵C++ SFML
- SFML无法正确移动精灵
- C++ SFML 精灵运动无法按预期工作
- SFML:在旋转SFML的精灵时,如何解决精灵质量下降
- SFML/C++ 闪烁命中效果 sf::精灵
- 试图用SFML中的精灵和纹理产生继承
- C SFML精灵不显示/工作
- 精灵不在SFML中移动
- SFML将精灵放在中心
- 如何获得精灵的实际位置并将其打印在C 和SFML中
- C++/SFML显示小精灵成员被鼠标点击更改的小故障
- C++SFML精灵大小错误
- 如何在 c++/sfml 2.1 中使任何精灵消失
- 我们可以在 SFML/C++ 中制作一个精灵数组吗?
- 我们可以在 SFML 2.1/C++ 中制作精灵的数组或多维数组吗?
- 随着时间的推移,每几秒钟喷一次精灵SFML C++
- 如何从列表中随机定位push_back()的精灵-SFML