SDL загрузка моего изображения испорчена - PullRequest
0 голосов
/ 21 декабря 2011

Я пытаюсь загрузить изображение, которое я экспортировал из flash CS3, это очень милое лицо, но оно загружается очень странно, оно загружается голубоватым образом, это код для двух файлов:

//main.cpp 

#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
#include "test.hpp"



int main(int argc, char *argv[])
{




SDL_Init(SDL_INIT_VIDEO);

// Activamos modo de video
screen = SDL_SetVideoMode(640,480,32,SDL_SWSURFACE | SDL_DOUBLEBUF);

    image = IMG_Load("face.bmp");

    dest.x = 200;
    dest.y = 200;


//Main Loop
while(Abierto)
{
    //We Draw
    Draw();

    //Events
    while( SDL_PollEvent(&event))
    {
        if(event.type == SDL_QUIT)
            Abierto = false;
            }


}


// We free the image
SDL_FreeSurface(image);

SDL_Quit();

return 0;
}

Теперь другой;

//test.hpp

DL_Surface *image = NULL, *screen = NULL;
SDL_Rect dest;
SDL_Event event;

bool Abierto = true;
float PlaneX = 300, PlaneY = 200;
float velX = 0.1, velY = 0.1;


void Draw()
{
Uint32 color;



// Black Background is created
color = SDL_MapRGB (screen -> format, 0, 0, 0);
SDL_FillRect (screen, NULL, color);
SDL_DisplayFormatAlpha(image);


SDL_BlitSurface(image, NULL, screen, &dest);

// Flip the working image buffer with the screen buffer
SDL_Flip (screen);


}

Мне нужна помощь в этом, пожалуйста, я не настолько опытен в SDL, о, и если вы хотите поближе взглянуть, я приветствовал проект здесь .

О боже, я должен добавить изображение размером 32 пикселя с альфа-каналом в соответствии с параметрами экспорта flash

1 Ответ

2 голосов
/ 21 декабря 2011

Согласно документам, SDL_DisplayFormatAlpha возвращает новое изображение и сохраняет оригинал без изменений.

Итак, попробуйте в первой части, когда вы загрузите изображение:

SDL_Surface *origImage = IMG_Load("face.bmp");
image = SDL_DisplayFormatAlpha(origImage);
SDL_FreeSurface(origImage)

Поскольку нет необходимости вызывать SDL_DisplayFormatAlpha каждый кадр.

Затем ввторая часть, просто блин image, без вызова SDL_DisplayFormatAlpha.

ОБНОВЛЕНИЕ

Я только что проверил вашу фотографию, и похоже, что это странно BMP.Я видел это раньше: формат BMP такой беспорядок, что, если вы не придерживаетесь основ, есть вероятность, что разные программы будут интерпретировать данные по-разному.

В вашем случае:

  • display face.bmp показывает правильно.
  • gthumb face.bmp ничего не показывает.
  • eog face.bmp говорит "фиктивные данные заголовка".

Я настоятельно рекомендую использоватьФайлы PNG для всех картинок, похожих на ваши игры, и JPG для всех фотографий, похожих на фотографии.

Запустите

$ convert face.bmp face.png

И используйте файл PNG.Я буду работать лучше, и у вас будет файл размером 20% от оригинала.

...