我发现使用 SDL2 绘制的对象上附加了很多杂散像素。添加额外像素的对象包括线条、填充矩形以及转换为纹理的 TTF 文本。这SDL_RenderFillRect() https://wiki.libsdl.org/SDL_RenderFillRect函数有两个参数:一个SDL_Renderer*
and an SDL_Rect*
指定矩形的显示位置。我使用该函数来绘制矩形。我不明白我怎么可能做错事。每当存在杂散像素时,它始终是附加到对象的一个像素。例如,我的矩形将如下所示:
XXXXXXXXXXX
XXXXXXXXXXX
XXXXXXXXXXXX <----stray pixel on the right-bottom
上面的像素数和真实图像的像素数不一样,比例也不一样,但是思想是一样的。有一个额外的附加像素。
我会用线条得到类似的东西。像这样(由3行组成):
X <--- stray pixel
XXXXXXXXXXXXXXXXX
X X
X X
对于文本,我会得到这样的内容:
XXXXXXXXX
X
X
X
X <--- stray pixel
杂散像素总是出现在同一个地方。对于文本,它们总是存在的。对于线条和方框来说,它们只是有时存在。
知道为什么会发生这种情况吗?哪些因素会导致这种情况?
我还无法生成一个最小的可重现示例。然而,我确实找到了至少一个解决方法(以及导致问题的原因的提示),希望这是暂时的。我发现当我打电话时杂散像素消失了SDL_CreateRenderer()
有旗帜SDL_RENDERER_SOFTWARE
而不是SDL_RENDERER_ACCELERATED
。希望当我在屏幕上绘制更多内容时,我不会发现程序运行速度超慢。但这样做已经完全摆脱了杂散像素。所以,我对此感到非常高兴,至少现在是这样。
如果有人对这个问题以及为什么我必须使用软件渲染来避免杂散像素有更多的见解,请编辑此答案或添加评论。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)