본문 바로가기

Developement

(142)
[FLTK]minGW 에서 OpenGL 3.x 사용하기 (Shader programming) 기본적으로 minGW 를 설치 하면 포함 되어 있는 OpenGL header 버젼은 1.2 대 버젼으로 현재 4.0 헤더가 크로노스 그룹에서 공개 된 걸 생각하면 한참이나 구시대의 유물인 상태 이다. 사실 이걸로는 GeForce2 나 RadeonX 시절의 pixel shader 없는 심심한 그래픽이나 그리는거 말곤 할수 있는게 없다. 이번엔 FLTK 에서 OpenGL shader programming 을 통한 YUV422 이미지를 Programming Object ARB 를 이용하여 texture 1+2+3 을 겹쳐 하나의 완성된 이미지로 만들어 내는걸 해 보기로 하면서 기본 MinGW 에서 수정 되어야 할 점과, OpenGL 프로그래밍을 할때 추가 해야 하는 부분들을 정리 해 보도록 하겠다. 먼저 기본..
[FLTK] ffmpeg library 붙이기 1단계 OK. 근래 ffmpeg 을 빌드 해서 BGRA 4bytes 픽셀 데이터를 얻어 화면에 뿌리는 작업을 하는 김에 FLTK 를 붙여 본 작업을 진행 하고 있습니다. 물론 이 작업은 순조롭게 진행 되어 2개의 후면 버퍼로 그리는데 지장 없이 완료 되었습니다. ffmpeg 의 기본 SDL 을 이용한 예제 보다 반응속도가 빠르고 frame skip 을 저해 하는 요소도 비동기적으로 설계된 부분덕분에 없는 편 입니다만, 화면을 처리 하는 부분이 thread 대신 timer 로 만들어 테스트 해서 초당 화면 렌더링 속도는 떨어지는 편 인 듯 합니다. 제작이 완료 되는 대로 사용된 ffmpeg 및 예제 소스는 제 gitHub resource 중에 포함 시키도록 하여 GPL/LGPL 에 따라 공개 하도록 하겠습니다.
[FLTK] Fl_RGB_Image 소멸시 주의 사항. 금일 이전에 만든 Rotating 이 되는 이미지 를 고속으로 FLTK 로 그리는 작업을 실행 중에 고속으로 메모리가 증가 하는 문제가 발생 했습니다. 이는 Fl_RGB_Image 의 생성시 unsigned char 형태의 array 로 생성 되는 경우, 참조되는 array 가 생성하는 쪽에서 제거를 해야 하는 형태로 만들어 지는 것을 간과 했기 때문 입니다. Fl_Image.H 의 Fl_RGB_Image 생성자 부분을 보면, Fl_RGB_Image(const uchar *bits, int W, int H, int D=3, int LD=0) : Fl_Image(W,H,D), array(bits), alloc_array(0), id_(0), mask_(0) {data((const char **)&array..
Linux 에서 Android device USB debugging 설정 하기. Linux Mint 17.1 32bit 에서 USB debugging 을 위해 Android 기기를 연결 하면 당연히 아무것도 되는게 없다. adb device 해 봐야 뜨는게 없다. 이럴땐 다음과 같이 하도록 하자. 먼저 lsusb 를 이용해서 현재 꼽혀 있는 USB 장치의 Vendor ID 를 알아 와야 한다. (또는 google 문서에 있는 ID 참조) 위 이미지 처럼 확인되어야 하는 것은 Bus xxx Device xxx: ID AAAA:xxxx xxxxxxxxxxx..... 에서 AAAA 4자리의 16진수 이다. 이것을 Gedit 등에 복사 후 붙여 둔 다음 Terminal 에서 /etc/udev/rules.d 로 이동 한 다음 51-android.rules 가 있는지 확인 해 본다. (만약 없..
Android SDK 의 HW emulator 32bit 오류 나며 구동 안 될때 현재 Android app 개발을 demonstration 용으로 진행 중 인데, Java를 C++ 코드 처럼 짜는 본인에게 이런 환경 구축은 어려운 일 이다. 그중 Emulator를 Nexus5 와 맞춰 놓고 구동 하니 이런 오류를 내 뱉는다. ERROR: 32-bit Linux Android emulator binaries are DEPRECATED, to use them you will have to do at least one of the following: - Use the '-force-32bit' option when invoking 'emulator'. - Set ANDROID_EMULATOR_FORCE_32BIT to 'true' in your environment. 읭? 어쩌라고...개..
HTTP/1.1 의 POST 때문에 살짝 고민한 문제 .... 이전에 만든 HTTP/1.0 용 socket source 를 POST 까지 되도록 버그를 수정 하면서 HTTP/1.1 으로 호환되게 변경 하다 보니 알수 없는 문제를 격었습니다. 바로 해당 서버(Apache2 + PHP5) 에서 $_POST[x] method 를 이용해서 넘어 온 것이 없는 듯이 인식 한다는 점 이었습니다만, 여러번의 시도 중 다음 header 인자가 중요하다는 것을 알았습니다. 바로 Content-Type 이 문제 였습니다. PHP5 에서 제대로 POST 되는 내용을 알려면 Content-Type 을 application/x-www-form-urlencoded 로 써야 인식을 하는 것 이었습니다. 기존엔 text/html 로 mime 을 지정해서 보냈더니 이걸 인식 못하는 문제를 이제 ..
짬이 얼만데 저지른 어처구니 없는 실수 ... 프로그래밍을 해 온지 몇년인데 ... 인지하지 못하는 실수가 오늘 있었습니다.새로운 FLTK window 를 Fl_Window 를 상속 받아 만들고 컴파일 했는데 왠 vtable 오류가 나길래 왜이러나 했습니다. 수년간 이런 실수를 한 적이 없는데 '왜 갑자기 class table 오류가 나는거지 ?' 하고 그냥 소스를 봤습니다. '상속을 잘못 받아서 쓴건가?' 라고 단순히 행각 해 봤는데 ... 딱히 하는게 없습니다. '대체 왜이러시나?' 하고 Header 를 다시 봅니다. '내가 뭘 잘못 쳤나 ... ?' 라며. 이런 말이 있죠. "들어 올땐 니 맘대로 였는데, 나갈땐 아니란다 ..."그렇습니다. 생성자만 만들어 놓고 소멸자에 virtual 로 만든게 아닌데 cpp 에선 소멸자를 만들어 놓지도 않은 ..
[FLTK] Fl_Group 을 이용한 화면 분할 및 자동 크기 조정. FLTK 는 Windows 나 X11 에서 창의 크기를 조정 할 수 있도록 만들어 져 있습니다만, 기본적으로 resize 를 지원 할 경우 최초 만들어진 창의 크기에 각 위젯(Fl_Widget) 들이 만들어진 크기의 비율(ratio) 로 그 크기가 조정 되게 됩니다. 이런 방법은 최초 만들어진 UI 의 디자인적 요소를 해치지 않고 그 비율을 유지 한다는 장점이 있을 수도 있지만, 좀 더 detail 한 UI 를 적용 하는데 있어서는 오히려 해가 되는 경우가 있습니다. 예를 들어 다음과 같이 만들어진 프로그램의 경우, 최초 실행되는 크기에서 윈도우 크기를 변경 할 경우 비율대로 커지게 되면 다음과 같이 글자 크기만 빼고 비율 대로 늘어지는 모습을 가지게 됩니다. 비율대로 커지는것 까지는 좋게 생각할 수 있..