LINUX.ORG.RU

массив для SDL_Surface из SDL

 , ,


0

1

можно например загрузить файл с рисунком из папки. А вот например я с помощью gimp экспортирую рисунок в два файла в *.c и *.h. Можно ли использовать какой нибудь из этих файлов для того чтобы добавить массив в sdl_surface ? Если можно, то как ?

SDL_LoadBMP() же. Или SDL_image

anonymous
()

с помощью gimp экспортирую рисунок в два файла в *.c и *.h

Никогда бы не добрался до этой возможности, если бы не прочитал, наверное.

А вообще, как я вижу, после экспорта получается просто файл со структурой

/* GIMP RGB C-Source image dump (file.c) */

static const struct {
  guint  	 width;
  guint  	 height;
  guint  	 bytes_per_pixel; /* 2:RGB16, 3:RGB, 4:RGBA */ 
  guint8 	 pixel_data[688 * 512 * 3 + 1];
} gimp_image = {
  688, 512, 3,
  "\36\36\36\35\35\35\34\34\34\34\34\34\33\33\33\33\33\33\32\34\33\32\34\33"
...

А значит, просто подключаем этот файл в проект, и где-то в gimp_image.pixel_data и лежит наше изображение.

al_exquemelin ★★★
()

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

andreyu ★★★★★
()

И всё же, как сделать чтобы заработало? Нужен пример.

u0atgKIRznY5
() автор топика

А может в помощь SDL_CreateRGBSurfaceFrom.

struct gimp_image *gimp; 
image = SDL_CreateRGBSurfaceFrom(gimp->pixel_data,438,274,0,3,0,0,0,0); 

error: dereferencing pointer to incomplete type ‘struct gimp_image’
что в переводе 'разыменовании указатель неполного типа'

Не могу понять как сделать правильно.

u0atgKIRznY5
() автор топика

А вот например я с помощью gimp экспортирую рисунок в два файла в *.c и *.h. Можно ли использовать какой нибудь из этих файлов для того чтобы добавить массив в sdl_surface ?

Можно через imagemagick перегнать файл в raw формат, а потом objcopy. Не знаю что там насчет SDL но вот пример для XCB http://dump.bitcheese.net/files/gevazax/xcb_exmpl.tar.gz

Использование обычных массивов внутри .c файлов для больших размерах картинки приводит обычно к очень долгой компиляции (или вообще может закончиться ошибкой)

SZT ★★★★★
()
Последнее исправление: SZT (всего исправлений: 1)
Ответ на: комментарий от EXL

Спасибо заработало. А то я уже начал использовать массив из xpm. Насчёт ответа спасибо. Нужно было переименовать полученный через gimp c source в c header. Теперь я знаю оба варианта загрузки из массива!

u0atgKIRznY5
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.