SDL_BlitSurface всегда размыто. Что я делаю не так?

#c #sdl

#c #sdl

Вопрос:

В моем коде я просто хочу отобразить png-изображение на экране, используя SDL 1.2.15, без масштабирования. Однако изображение, отображаемое на экране с помощью приведенного ниже кода, всегда получается размытым, а цвета не отображаются (см. прикрепленное изображение). Что я делаю не так?

 SDL_Init(SDL_INIT_VIDEO);
SDL_Surface *screen = SDL_SetVideoMode(400, 240, 24, SDL_HWSURFACE);
SDL_Surface *image = IMG_Load ( "/image.png" );
SDL_BlitSurface ( image, NULL, screen, NULL );
SDL_Flip(screen);
  

На рисунке ниже показано исходное изображение в сером поле (увеличенное — каждая черная полоса имеет ширину в один пиксель, исходные размеры 11×11 пикселей) слева и то, что отображается на экране после выполнения приведенного выше кода справа.

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

Комментарии:

1. Есть ли какая-то конкретная причина, по которой вы используете SDL1 вместо SDL2?

2. Да — SDL2 не был перенесен на платформу, для которой я пишу код

3. Что это за платформа?

4. Платформа — Nintendo 3DS

5. Вы не проверяете возвращаемые значения BlitSurface или Flip на наличие ошибок, так что это первое, что нужно сделать. Также убедитесь, что ваша версия SDL_image верна.

Ответ №1:

Проблема была специфична для платформы реализации SDL и, следовательно, недопустима для SDL в целом