본문 바로가기
프로그래밍/PSP

[PSP] EZBIBLE 한글폰트캐시

by 베리베리 2009. 6. 23.

6개월만에 다시 psp프로그래밍에 손을 댔다.
개발이 중단된 이유는 ttf를 적용하다가 뭔가 출력쪽에 문제가 있어서...
끙끙거리다가.. 해결이 안되길래 중단한것이었는데.....
그 이후로 손도 대지 않고 있다가...... 다시 작업을 하고있다.
그동안 여러가지 일들이 있었는데.... 언젠가는 psp프로그래밍을 끝내야한다는 생각이 있었기때문에....
마음한구석에 아쉬움이 있었다. 차라리 ttf지원을 빼고 공개할걸 그랬나.. 하고 후회도 했었다.
다시 해보니 예상외로 쉽게 해결됐다..... 하루도 안걸렸다...;;;(뭐지-_-) 원인이 뭔지 ... 모두 파악했는데....

1. gu는 출력쪽에 캐시기능이 있다는 것. (텍스쳐사용안하면 의미없음)
2. 더블버퍼링이 사용되므로 flip 을 해야하는데 나는 flip 을 두번했다는것;;; (어쩐지 화면이 안나오더라는;;;)
3. 기타 버그요소들..(출력버퍼 주소를 잘못지정;;)

이제....드뎌... ttf 한글폰트출력은 됐지만.... 캐시가 전혀사용되지 않아 출력속도가 매우 느린문제가 있다.
소스를 보니 PSP는 출력버퍼가 픽셀 하나에 4바이트라서 TTF 비트맵을 얻어서 화면에 찍을때 rgba로 변환하여 출력하게 되어있다

아예 4바이트 통째로 메모리에 저장하면 빠를거같지만....(배경은 단색으로 해야겠지;;) 유니코드 전체에 대해서 메모리에 집어넣으려면
로딩도 많이 걸리겠고..... 20x20 짜리 비트맵이라면 x유니코드 약5만자 = 80M 씩이나 필요하다....
PSP는 램이 32M인데 될리가 있나;;

배경이 단색이라는것도 단점이 될거고........
배경이 바뀌면 캐시를 다시만들어야 하니까.... 이렇게 할순없다.
그래서 생각해보니 한글은 완성형 2300자정도만 캐시해도 웬만한 한글은 비트맵을 다시만들필요없이
캐시로 해결된다.

그래서 완성형 코드표를 구했다.
내가 필요한건 완성형 2300자에 대한 유니코드주소다.
그 다음 FT함수를 사용해서 구한 픽셀당 1바이트짜리 비트맵을 캐시하면된다.
가로x세로 20x20 = 400 바이트 x 2300자 = 920000 바이트

1M도 안된다ㅋ

좋았어! 이걸로 승부다.



댓글