是什么导致杂散像素出现在我的SDL2程序中?

我看到许多杂散像素附着到使用SDL2绘制的对象上。多余像素添加到的对象是线条,实心矩形和TTF文本变成纹理。 SDL_RenderFillRect()函数采用两个参数:SDL_Renderer*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

杂散像素始终显示在同一位置。对于文本,它们始终在那里。对于线条和盒子,它们有时只是在那里。

知道为什么会这样吗?会导致这种情况的原因是什么?

chunbaise0601 回答:是什么导致杂散像素出现在我的SDL2程序中?

我还无法提供一个最小的可复制示例。但是,我确实找到了至少一个变通办法(以及有关导致问题的原因的提示),希望这是暂时的。我发现用标志SDL_CreateRenderer()而不是SDL_RENDERER_SOFTWARE调用SDL_RENDERER_ACCELERATED时,杂散像素消失了。希望当我在屏幕上绘制更多内容时,我不会发现程序运行速度超级慢。但是这样做已经完全摆脱了杂散像素。因此,至少在目前,我对此感到非常高兴。

如果有人对这个问题以及为什么我不得不使用软件渲染来避免出现杂散像素有更多的见解,请编辑此答案或添加评论。

本文链接:https://www.f2er.com/3114483.html

大家都在问