什么可能导致杂散像素出现在我的 SDL2 程序中?
What could be causing stray pixels to appear in my SDL2 program?
我发现我使用 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
杂散像素总是出现在同一个地方。对于文本,它们始终存在。对于线和框,它们只是有时存在。
知道为什么会这样吗?什么样的事情会导致这种情况?
我还没有能够生成最小的可重现示例。但是,我确实至少找到了一种解决方法(以及导致问题的原因的提示),希望它是暂时的。我发现当我用标志 SDL_RENDERER_SOFTWARE
而不是 SDL_RENDERER_ACCELERATED
调用 SDL_CreateRenderer()
时,杂散像素消失了。希望我在屏幕上绘制更多内容时不会发现我的程序 运行 超级慢。但是这样做已经完全摆脱了杂散像素。所以,我对此感到非常高兴,至少现在是这样。
如果有人对这个问题以及为什么我必须使用软件渲染来避免杂散像素有更多的了解,请编辑此答案或添加评论。
我发现我使用 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
杂散像素总是出现在同一个地方。对于文本,它们始终存在。对于线和框,它们只是有时存在。
知道为什么会这样吗?什么样的事情会导致这种情况?
我还没有能够生成最小的可重现示例。但是,我确实至少找到了一种解决方法(以及导致问题的原因的提示),希望它是暂时的。我发现当我用标志 SDL_RENDERER_SOFTWARE
而不是 SDL_RENDERER_ACCELERATED
调用 SDL_CreateRenderer()
时,杂散像素消失了。希望我在屏幕上绘制更多内容时不会发现我的程序 运行 超级慢。但是这样做已经完全摆脱了杂散像素。所以,我对此感到非常高兴,至少现在是这样。
如果有人对这个问题以及为什么我必须使用软件渲染来避免杂散像素有更多的了解,请编辑此答案或添加评论。