그레이 스케일 그림을 나타내는 uint8_t
의 배열이 있습니다. 각 픽셀은 uint8_t
입니다. 나는 이것을 SDL2 라이브러리를 사용하여 창에 표시하고 싶습니다.SDL2의 그레이 스케일 이미지
제가
mSurface = SDL_CreateRGBSurfaceFrom(mData, mWidth, mHeight, 8, mWidth, 0xFF0000, 0xFF0000, 0xFF0000, 0xFF0000);
그러나 수행하여 배열에서 SDL_Surface를 만드는 시도 상기 문제는 (I 여기했을으로) 8 비트의 깊이가있어서, SDL_CreateRGBSurfaceFrom 전달 될 때 SDL2 wiki "깊이가 4 또는 8 비트이면 빈 팔레트가 표면에 할당됩니다." 그렇지 않은 경우 SDL에 각 픽셀이 1 바이트임을 알리고 R, G 및 B 값으로 해당 바이트를 사용합니다.
내 데이터가 저장되는 방식이므로 픽셀 당 8 비트의 깊이가 필요하지만 팔레트를 사용하고 싶지 않습니다.
SDL이 pallete를 원하지 않는다고 할 수있는 방법이 있습니까? r, g 및 b 마스크가 모두 해당 바이트로 설정되어있는 이미지 만 표시합니까?
다른 해결책은 각 바이트를 세 번 복사 한 다음 회색조 이미지를 RGB로 변환하는 것입니다. 그러나 모든 복사가 느리기 때문에 가능하면 그렇게하지 않는 것이 좋습니다.