cocos2d將大張SpriteFrame縮小後消除鋸齒的作法

研究後沒有使用
紀錄一下

如果有一張大圖想要縮小使用
當縮小的比例很小時
即使對該圖的texture 呼叫 setAntiAliasTexParameters()
也會有鋸齒的感覺

如果不另外用小圖的話
可以使用mipmap去處理
主要對目標texture作兩步驟處理

  1. 呼叫generateMipmap()
  2. 呼叫setTexParameters()
    ccTexParams.minFilter = GL_LINEAR_MIPMAP_LINEAR
    ccTexParams.magFilter = GL_LINEAR or GL_LINEAR_MIPMAP_LINEAR

基本上原圖為NPOT才可以用
使用後就不會有明顯的鋸齒感覺
感覺上會比較滑順

但應該會加重記憶體的使用
故不使用

ref :
http://www.cocos2d-iphone.org/forum/topic/2735
http://zh.wikipedia.org/wiki/Mipmap

Lua預編譯

Lua預編譯主要好處:加載更快,與保護source code免於被用戶修改(另外還有檔案更小)。

方法:

  1. 安裝luaforwindows
    http://code.google.com/p/luaforwindows/
  2. 安裝後設定系統Path 加上lua安裝路徑
    預設應該是 C:\Program Files\Lua\5.1
  3. 開cmd, 輸入luac 測試一下可不可以執行
  4. 可以的話可開始使用, 使用方法如下:
    luac -o [預編譯後檔案路徑] [要預編譯檔案路徑] (可將多個檔案預編成單一檔案)

以下是lua學習參考資料
http://linux.die.net/man/1/luac
http://blog.chinaunix.net/space.php?uid=380521&do=blog&id=2412459
http://timothyqiu.com/2011/lua-note-02-table-traversal-using-c-api/

JNIEnv錯誤使用紀錄

最近專案有需要從cocos2d-x接Open Feint的功能
所以必須要從c++ call Java code
不過犯了一個極大的錯誤

一開始activity在啟動時呼叫一個function
記錄該方法傳入的JNIEnv的指標
做為C call Java code時使用
在成就上傳時常常會死當
後來剛好ndk r6出來後就用ndk-stack來除錯
發現是JNIEnv指標出問題

後來再查資料才知道JNIEnv指標與Thread有關
像我這樣的作法是會有問題的
穩當的作法是存JavaVM指標

  • JNI_OnLoad
  • JNI_CreateJavaVM

再以JavaVM取JNIEnv

  • AttachCurrentThread
  • GetEnv

以下為相關資料
http://java.sun.com/docs/books/jni/html/other.html
http://download.oracle.com/javase/1.4.2/docs/guide/jni/spec/invocation.html
http://blog.sina.com.cn/s/blog_6111ce890100q1b7.html
http://home.eeworld.com.cn/my/space.php?uid=111224&do=blog&id=34765
http://newfaction.net/2011/03/29/restrictions-on-calling-thread-jnienv.html
http://www.cppblog.com/sherrylso/archive/2011/02/18/140254.html