2013-04-20 3 views
1

CImg으로 생성 된 이미지를 SDL 화면에 표시하려고합니다.SDL에서 CImg 이미지를 사용하는 방법

CImg은 이미지 데이터를 간단한 배열로 저장합니다 (예 : 파란색 값보다 녹색 값 앞에 빨간색 값).

RWops를 사용하는 방법을 읽었지만 어떻게 든 RWops 구조로 이미지 데이터를 변환하는 방법을 알 수 없습니다.

답변

1

나는 결코 CImg을 사용하지 않았지만 기본적으로 CImg 데이터를 알려진 이미지 형식 (예 : bitmap)으로 변환하는 방법을 만들면됩니다.

불행히도 SourceForge에서 볼 수 있듯이 CImg은 이런 종류의 기능을 제공하지 않지만 누군가는 형식적으로 문제가있는 것으로 보이지만 코드에 스레드를 제공하기에 충분히 친절했습니다.

위의 스레드에서 코드를 사용하고 SDL_LoadBMP_RW, 당신은 같은 것을 할 거라고 :

unsigned char *bitmapImage = NULL; //the target-buffer 
bitmapImage = cimg_image.save_bmp2buffer(); //get the bmp-buffer 

// the buffer size is based on the bmp format, according to save_bmp2buffer it should be something like: 
// I simplified a bit his formula, some operations didn't seem necessary 
// The 54 represents the size of a bitmap header, the rest is the padded pixel content size 
int imgSize = 54 + (3 * cimg_image.width() + 4 - (3 * cimg_image.width()) % 4) * cimg_image.height(); 

SDL_RWops* rw = SDL_RWFromMem(bitmapImage, imgSize); 

SDL_Surface* yourSurface = SDL_LoadBMP_RW(rw, 1); // 1 will free the rw when done 

free(bitmapImage); 

이 코드는 테스트되지 않습니다,하지만 좋은 출발점이되어야합니다!

+0

아직 시도하지 않았지만 실행 가능한 해결책으로 보입니다. – mish