읽기에 앞서:
이 프로그램은 현재 개발중인 소스코드를 설명 하고 있으며, GCC및 G++ 를 이용할 줄 아는 사용자에 한해 설명이 가능한 부분이 있으니, 다소 어려운 내용을 포함하고 있을 수 있다는 점을 먼저 인지 해 주시기 바랍니다.
몇가지 해 볼 것이 있다는 이유로 Raspberry Pi 3B+ 모델을 현재 7" 800x480 LCD 와 붙여 사용 중 이긴 합니다만, NXDE 를 올려서 가볍게 써 보겠다는 취지는 좋으나, 아무래도 다양한 Software 가 없다는 것을 파악 할 수 있는 것이 바로 이 Raspberry Pi 생태계 인것 같습니다. 64bit AP 를 달고도 32bit kernel 이 올라가 있는 느낌같은 느낌은 뒤로 하고, 아무튼 NXDE 도 X11 기본은 하는 것일테니, 다음 요소들을 Raspberry Pi 3B+ 에 맞게 사용할 수 있도록 최근 업데이트 하였습니다.
- FLTK-1.3.4-2-ts
▶ 해당 페이지 WIKI 란에 Raspberry Pi3B+ configuration 및 build 방법이 소개 되어 있음. - fl_imgtk
▶ Makefile.gcc 를 Makefile 로 복사 한 다음, -mavx 같은 옵션을 제거 하고 빌드 가능. - make_img_o_hdr
▶RPI3 용 Makefile 추가됨, lib 디렉터리 안에 fl_imgtk 빌드 하여 만들어진 lib 및 h 파일을 복사 해 넣고 빌드.
위 세가지 요소만 해도 RPI3B+ 내에서 빌드 하여 사용할 수 있으며, 이를 위해 G++ 이나 automake 등은 추가로 apt-get install 으로 시스템에 설치 해 줘야 하는 필요는 있습니다.
이번에 추가 한 요소 중 하나는 전체화면 사용 기능인데, RPI3B+ 에 7" 화면을 사용할 경우, 사실상 해상도 등등의 문제 때문에 사용이 어려운 부분이 많았습니다.
그리하여 몇가지 요소를 수정할 수 있도록 하여 ( 제어 기능등이 들어간 영역 배경에 blur 처리 제거 같은 ) 시험적인 구동을 해 보았습니다.
이미지 로딩 및, 리사이즈, 출력 속도 모두가 기본으로 설치되어 있는 이미지 뷰어 보다 월등히 빠릅니다. 역시 OpenMP 빨로 core 4개를 갈구는데는 최고인가 합니다만, 이 때 별도로 이미지만 보는 기능을 다른 프로젝트로 만들어 RPI에 7" LCD 사용시 이미지를 멋드러지게 보여 주는 프로그램을 만들어 봐야 겠다는 추가적인 아이디어가 떠오르게 되기도 했습니다.
Log mapping 이나, Reinhard 처리 정도는 원본 이미지 해상도에 따라 동작하다 보니, 시간이 오래 걸리는건 OpenMP 로 처리해서 돌린다 한들 의미가 크진 않은듯 합니다만, 나중에 이미지만 계속 보여주는 뭔가를 만들어 화면 해상도에 맞게 resize 된 이미지에 이런 후처리를 하는데는 그리 긴 시간이 걸리지 않을 듯 하였습니다. (약 100~500 ms 내외)
물론 FLTK 이미지 변경 후 강제 출력하는 코드가 있어서 자주 아래 처럼 죽는 경우가 있어서 수정이 필요한 상태 입니다만, 시간이 나는대로 X11 에 대한 호환성을 높여 볼까 합니다.
번외로 Odroid XU4 에서 FLTK 를 porting 해서 쓰는 중인데, Ubuntu 16.04 LTS 버젼 에서 32bit alpha 처리 부분이 지원이 되지 않아 PNG 이미지들을 못 그리는 문제가 있었습니다. 그러다 보니 이 프로그램인 MIOHDR 역시 아이콘에 해당하는 이미지를 못 그리게 되고 여러 문제가 발생 하는걸 보아, 추후 아이콘 이미지는 XBM 을 쓴다거나, 투명 컨트롤을 안 쓰는 옵션을 넣는다거나 해서 해당 문제를 해결 할 수 있는 여러 솔루션을 찾아 보아야 할 듯 합니다.
Raspberry Pi 같은 경우 저성능 이긴 하지만, 4개의 코어를 가진 ARM Cortex-A53 을 쓰는데다, 조금 애매하지만 1GB 의 DDR2 메모리, 그리고 사용자의 sdcard 만 있으면 뭐든 돌려 볼수는 있는 환경을 주는 재미난 Debian 후광을 입은 Linux 기기다 보니 재미난 것들을 많이 만들어 볼 수 있어 보입니다.
위에 소개된 모든 소스코드는 Open source 이며, 누구나 개발에 참여를 하실 수 있습니다. 관심이 있으신 분들은 참여하시거나, 본인의 다른 개발에 사용해 보시기 바랍니다.