SDL在不进行缩放的情况下绘制图像模糊。

5

我正在使用SDL(Simple Directmedia Layer)在C ++中开发一个项目,但是当我将SDL_Texture绘制到屏幕上时,即使它没有缩放,它也会变得模糊。

图像的加载方式:

SDL_Surface* loadedSurface = IMG_Load("image.png");
SDL_Texture* gImage = SDL_CreateTextureFromSurface( gRenderer, loadedSurface);

如何将图像绘制到屏幕上:
SDL_Rect renderQuad = { x, y, width, height };
SDL_RenderCopy(gRenderer, gImage , NULL, &renderQuad );

请看图片,左边是程序中的内容,右边是原始内容:

enter image description here

我是否忘记设置某个参数?SDL 这样做是否正常?

我在 Windows 8.1 64 位机器上使用 SDL 2.0 32 位。


看起来图像已经进行了抗锯齿处理。 - Some programmer dude
可能是由于Render Scale Quality提示的原因。更多信息请参阅:http://forums.libsdl.org/viewtopic.php?t=9500 - fmcato
你的代码中有使用到任何 SDL_GL_* 函数吗? - bfair
@Oli414 你解决这个问题了吗? - user2742371
@YassineHoussni 很抱歉,我还没有找到解决方案 :-/ - Oli414
@Oli414 我开始觉得可能没有解决方案,但如果我找到了,我会在这里发布答案。 - user2742371
1个回答

1
在调用SDL_CreateTextureFromSurface之前,请尝试调用以下内容:
SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "0");

根据SDL Wiki,这应该会影响SDL_CreateTextureFromSurface调用对表面的插值。 "0"应该产生最近邻像素效果,消除您所看到的模糊效果。

1
已经尝试过了,没有改变任何东西。可能是因为纹理没有缩放。将其更改为另一个值也不会改变任何东西。 - Oli414

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接