SDL рисует размытые изображения без масштабирования

Я работаю над проектом на С++ с использованием SDL (Simple Directmedia Layer), но когда я рисую 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 );

Смотрите изображение, слева в программе, а справа оригинал:

введите здесь описание изображения

Есть ли параметр, который забыли установить? И нормально ли, что SDL делает это?

Я использую 32-разрядную версию SDL 2.0 на 64-разрядной машине с Windows 8.1.


person Oli414    schedule 29.01.2015    source источник
comment
Похоже, изображение было сглажено.   -  person Some programmer dude    schedule 29.01.2015
comment
Возможно, это из-за подсказки Render Scale Quality. Подробнее здесь: forums.libsdl.org/viewtopic.php?t=9500   -  person fmcato    schedule 29.01.2015
comment
Используете ли вы какие-либо функции SDL_GL_* в своем коде?   -  person bfair    schedule 29.01.2015
comment
@Oli414 Oli414 Вы уже нашли решение этой проблемы?   -  person    schedule 04.03.2015
comment
@YassineHoussni, к сожалению, я не нашел решения :-/   -  person Oli414    schedule 05.03.2015
comment
@ Oli414 Oli414 Я начинаю думать, что решения нет, но если я его найду, я опубликую его здесь как ответ.   -  person    schedule 05.03.2015


Ответы (1)


Перед вызовом SDL_CreateTextureFromSurface попробуйте позвонить:

SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "0");

Согласно SDL Wiki, это должно повлиять на то, как вызовы SDL_CreateTextureFromSurface интерполируют поверхность. «0» должен привести к тому, что ближайший сосед уберет эффект размытия, который вы видите.

person stevejpurves    schedule 29.01.2015
comment
Уже пробовал, ничего не меняется. Возможно потому, что текстуры не масштабируются. Изменение его на другое значение также ничего не меняет. - person Oli414; 30.01.2015