【发布时间】:2021-05-22 17:47:53
【问题描述】:
当我在 SDL 中绘制一条线后的矩形时,我在矩形右上角的顶部得到了一个像线一样颜色的像素。线条和矩形是否具有不同的颜色并不重要。画线后的矩形时,矩形的右上角总是有一个像素。
这是我的矩形代码:
SDL_Rect srcrect;
srcrect.x = 50;
srcrect.y = 50;
srcrect.w = 150;
srcrect.h = 80;
这是我绘制的代码:
SDL_SetRenderDrawColor(renderer, 0, 0, 0, SDL_ALPHA_OPAQUE);
SDL_RenderClear(renderer);
SDL_SetRenderDrawColor(renderer, 255, 255, 255, SDL_ALPHA_OPAQUE);
SDL_RenderDrawLine(renderer, 20, 20, 300, 300);
SDL_SetRenderDrawColor(renderer, 255, 0, 255, SDL_ALPHA_OPAQUE);
SDL_RenderDrawRect(renderer, &srcrect);
SDL_RenderPresent(renderer);
这是整个渲染的图片:
这是在矩形右上角放大的图片:
当我画线之前的矩形时,我没有这个问题。
有谁知道为什么会发生这种情况?
编辑:
当我绘制第二个矩形时,这个矩形上没有像素问题。它只在该行之后的第一个矩形上。
编辑 2:
我发现了一篇关于完全相同问题的帖子。还有SDL_CreateSoftwareRenderer() 的解决方案。链接在这里:
What could be causing stray pixels to appear in my SDL2 program?
【问题讨论】:
-
你能用
SDL_CreateSoftwareRenderer()复制吗? -
使用 SoftwareRenderer 可以正常工作,但是有没有办法使用普通的
SDL_CreateRenderer()来解决这个问题? -
我查看了错误,但对我的问题没有帮助。
-
您是否尝试将程序通过 RenderDoc 来查看各个 3D API(D3D?OpenGL?随便!)调用及其在帧缓冲区(即屏幕)上的结果?它至少会指出它发生的原因,如果不是如何解决它。