Thursday, July 22, 2010

openframeworks!

整理一下最近弄openframeworks遇到的事情
雖然學長說他比較喜歡看到風花雪月,不過我的記性幾乎只能用在八卦上
這種事情要是不寫下來我會很快就忘記

原本我是計畫用processing來搞定很多東西,不過我開始有了在iphone/ipad/android上的需求
processing是有android的版本,用起來似乎也還可以,畢竟同樣都是java-based的
但iphone的解決方案,那個iprocessing對我而言根本就是個笑話
因為iprocessing只是用瀏覽器把processing.js包起來而已,既然是js就表示一堆東西不能跑

後來想到openframeworks,之前試玩過一陣子,語法跟架構的設計上跟processing很類似
但是顯然有稍稍複雜一點,而且在外掛的使用上也沒有processing那麼成熟
所以那時候並沒有深入研究,就是拿幾個範例改一改知道大概的設計邏輯就好
不過我知道ofx有android的版本,也有iphone的版本,而且似乎整合得很不錯

現在真的要開始用了,才發現openframeworks官方的東西真的都很beta,難怪標號還沒上到1
因為他們附的東西似乎都有點小問題,很多事情要解決還得自己翻論壇或自己重做

第一部分是顯示中文的功能
processing有個缺點是在CJK文字的處理上非常麻煩,必須製作vlw的字型檔,程式啟動時載入
基本上這是個圖像檔,所以非常吃記憶體,檔案很大散佈也很麻煩
(似乎因為專利的問題不能直接用TTF格式?)
但在ofx上就好很多,因為可以直接用xxx.ttf來顯示字型,但是用力一查才發現
ofx上的ofTrueTypeFont不能畫CJK字....即使用了unicode的字型檔還是不行....= =
有種解法就是把字型全部dump成glyph,不過這個方法跟processing一樣蠢
後來找到一篇文章,解釋了如何解決CJK文字的問題
下載了ofTrueTypeFontWS.h跟ofTrueTypeFontWS.cpp,直接丟進專案裡
結果一compile,失敗,找了一下原因,這篇文章的作者是用0.06版的ofx,我用的是0.061
原來,0.061的ofx把freetype的目錄改了(基本上是好事,因為freetype的檔頭位置統一了)
所以把OSX的include的部份,改成跟windows/linux的一樣就ok了

第二部分是把同樣的程式碼丟上iphone的測試
這下可好,一整個都是錯誤訊息,原因似乎是出在freeimage_universal.a這個檔案上
要改的話表示要重新compile,表示我要去找來一堆source code再重新編譯過,一想到就頭痛
幸好後來找到這篇文章,解釋了他重新編譯的結果,雖然成功,顏色卻會跑掉
他建議去論壇的這裡下載dupin的檔案,重新掛上去之後取代掉原本的.a,就一點問題也沒有了

所以現在總算可以在iphone上面用openframeworks顯示cjk文字了
好麻煩的frameworks哪....Orz

No comments: