요새 들어서 맨 처음 PSP를 사면서 만들고자 했었던 프로그램 제작이 자꾸 뒤쳐지는것 같아 어제는 맘을 단단히 붙들어 매고 FreeType 라이브러리를 다시 만져봤습니다. 기존 PSP 에 컴파일 해서 올리고 테스트 하고 하는게 너무 오래 걸려 어차피 멀티 플랫폼으로 개발된게 PC에서 MFC로 App를 개발해 테스트를 하기로 했습니다. 결과 라이브러리 정리도 어느정도 끝내고 괜찮게 만들어지는 것 같더군요. 그런데 역시나 한글 출력에 있어서 문제가 발생합니다. @0@ 문자를 바꿔주어야 할 텐데 참 아직 감이 잡히지 않는군요. 그래도 예전 TTF, OTF 문서를 조금이나마 봐서 그런지 이런 저런 해결점이 어느정도 보이긴 합니다만 그래도 아직은 귀차니즘이 덜 가셨는지 빠르게 진행이 안되는군요^^.
대충 진행 되더군요. 에구 그래도 너무 대충 만들었더니 영 그렇습니다^^; 마음 같아서는 바로바로 후딱후딱 해치우고 싶은데 그게 또 잘 안되는군요. 일단 이번 주말엔 어느정도 해결하여 제대로 된 프로그램을 제작해봐야 겠습니다^^.
결국 어제에 이어 해결책을 찾기는 찾았습니다. 보통 PSP 프로그램을 보니 많은 프로그램이 자체 Raw폰트를 생성하여 한글이나 한문을 출력하더군요. 제가 첫 Freetype에 대한 글에도 적었다시피 그런예가 아닌 ttf 파일을 읽어 출력하는 방법으로 프로그램을 만들고 싶어했습니다. 그리하여 어제 부터 제대로 시작한 삽질이 결국 끝을 보긴 봤군요. 아래는 설치방법입니다.
1. DevkitPro 설치
http://kkamagui.tistory.com/437에 올라온 내용대로 DevkitPro를 설치해야 합니다. 왜냐하면 일단 개발툴이 있어야 하잖아요^^. 제가 볼 때는 PSP-SDK 같은것을 따로 개별적으로 설치하면서 삽질하느니 이 통합설치패키지를 설치하면서 시간을 줄이는 것이 더욱 좋을것 같습니다.
msys 프로그램을 실행합니다. msys 폴더 아래에 있습니다. 실행한 다음 아래의 명령을 입력합니다. svn co svn://svn.ps2dev.org/psp/trunk/freetype
8. Compile 하기
위 명령으로 freetype 라이브러리를 받으면 freetype 폴더가 생성되고 그 안에 모든 파일을 받습니다. freetype 폴더 안으로 들어간 다음, 아래의 명령을 실행합니다. sh autogen.sh LDFLAGS="-L$(psp-config --pspsdk-path)/lib -lc -lpspuser" \ ./configure --host psp --prefix=$(psp-config --psp-prefix) make make install
꼭 \ 를 붙여주셔야 합니다. 왜냐하면 libc 에 해당되는 의존성 문제가 해결되야 하기 때문에 그렇습니다.
9. Freetype 라이브러리 헤더 설정
기존 설치경로로 생각을 한다면, C:\devkitPro\msys\home\FilePointer\freetype\include 에 존재하는 freetype 폴더와 ft2build.h 를 C:\devkitPro\devkitPSP\psp\sdk\include 로 복사합니다. 이렇게 되면 make 시 ft2build.h 를 자동 인클루드 하게 됩니다.
10. 예제 컴파일
FontLoader 샘플 컴파일, 0.1 버젼 혹은 0.2 버젼을 받은 다음 Sample\GU 폴더에 들어가 make 파일을 실행합니다. 그런 다음 PSP에 복사하고 ttf 파일도 복사하고 테스트를 해봅니다^^.
약간 복잡하군요^^. 에구 의존성 문제 해결한다고 삽질을 좀 많이 했군요. 어제 새벽 2시쯤엔 거의 정신이 몽롱해지더랍니다. 그래도 좋은 결과가 나와서 다행이네요. 더 많은 삽질도 없구요. 그럼 모두 즐거운 개발되시길 바랍니다.
에구.. 오랫만에 Freetype 라이브러리 문제를 해결해봐야 겠다 싶어 벌 써 몇시간 째 설정 중이네요. 일단 바이너리 쪽의 의존성 문제는 어느정도 해결을 봤는데, 이제 컴파일러 쪽에서 문제가 발생하는군요. psp-gcc.exe 로 만들어져 있는 것을 어떻게 configure 에서 checking gcc ... Yes로 바꿀까요? 이 것 참. 난감합니다. Makefile 로 수정이 가능할지는 모르겠습니다만. 일단 어느정도 되어가고 있으니 문제를 해결한 다음 글을 정리하여 올리도록 하겠습니다.
일단 진행중인 스샷이긴한데 이 부분을 해결해 보겠습니다. 시간이 빨리 지나가버리는 군요^^.
PSP에서 돌아갈 프로그램들을 개발하려다 보니 한글을 출력하는 것이 필수적(?)이 되어버리더군요. 주로 취급하게 될 데이터가 한글데이터가 될 예정이다 보니 한글을 깨끗하고 예쁘게 출력하는 것을 원하게 되더랍니다. 사실 단순히 출력만을 위해서라면 Raw 데이터 및, 비트 마스트들을 이용하여 출력하면 되지만 크기에 따라서 화면이 달라지고, 앤티 앨리어싱이 필요할 경우를 생각하다 보니 예상외로 고려해야 할 부분이 많더군요. 그리하여 웹을 한 참 찾아보다 예전부터 꽤 유명했던 Freetype, Freetype2 라이브러리를 PSP에서 사용할 수 있더군요^^. @0@ 우왕~굳 스럽더군요.
어제 오늘 PSP로 만지작 만지작 거리면서 테스트 프로그램을 몇 개 만들어봤습니다. 그렇게 시간이 엄청 많은 것은 아니었고 어느정도 테스트를 해보았는데, 일단 텍스트 출력하는 것을 파일로 읽어서 출력하는 것, 선 그리는 것을 gu라이브러리가 아닌 메모리 직접 액세스로 그리는 방법을 구현해봤습니다. 한 가지 궁금한 것은 보통 설명에서 sceIOpen 같은(?) 함수를 사용하여 파일을 조작하더군요. 그런데 혹시나 싶어 기본 라이브러리로 조작이 가능한지 궁금하여 테스트 해보았습니다.
위와 같은 코드에서 적었듯이 FILE* 형태인 파일포인터를 이용한 방법도 제대로 출력이 되었고, C++ 에서 기본 제공하는 std::fstream으로도 파일리딩이 제대로 가능하더군요. 그림은 다시 테스트 중이라 아직 원하는 결과물을 보지 못했습니다.
abdefghijklmnopqrstuvwxyz
라고 a.txt 에다 내용을 저장했습니다. 그럼 대충 추측이 가능하시죠^^; 뭐 제가 더 이상 말씀 드릴게 없을 것 같습니다.
결과는 위와 같습니다. 이 것참 카메라가 없어서 폰카로 찍다보니 품질에 좌절감이 드는군요. 하나 살까 생각이 갑자기 드네요. 지름은 지름을 부른다는 말이 맞습니다. 그런데 std::cout 에 대해서는 제대로 작동이 되지 않는 군요. 하긴 별로 사용하지 않으므로 그렇게 지원되냐 안되냐에 따라서 큰 문제가 되지는 않아 별 상관은 없습니다. 그래도 있으면 좋은데 없으니 필요할땐 불편하리라 생각합니다.
위 그림은 예전 선 그리기 소스에서 작성했던 그림(?)입니다. 일단 더 차츰차츰 테스트 해서 필요한게 다 정의 되면 바로 프로그램 원하는 것으로 개발 들어가야 겠습니다^^; 그럼 오늘도 좋은 하루 되세요.
댓글을 달아 주세요
저기...
한글출력이미 헤더파일들이 나와잇는데???
어떤 의미이신지 잘 모르겠네요^^;;
Truetype2 라이브러리에서 한글출력이 이미 지원된다고 하신의미면 이걸 할 당시 알고 있었습니다^^.. 그런데 실지 출력해보면 아시겠지만...
오래되어 기억이 희미하지만.. 폰트디스크립터? 에는 폰트파일 하나가 매핑되는데..
해당 폰트에 없는 글자를 뿌리면 이상한 깨지는 문자로 뜨던 것으로 기억하네요..
그래서.. 윈도우즈 같은 경우 패밀리 폰트라는 것으로 해당 문제를 해결한 것으로 보입니다만.. psp 같은 경우 굴림 폰트 하나에 10메가씩 하는데.. 패밀리 폰트를 할 수가 없었던 기억이 나네요^^..