Cocos2d-xのCCTMXTiledMapで線がチラつくときの対応方法(その2)
はじめに
最近、仕事でAndroid上でCocos2d-xを使ったアプリをリリースしたのですが、 その際にCCLOGを出ないようにする対応をしました。
つまりビルドの設定でCocos2d-xのライブラリ側の#ifdef制御を変更できることがわかったので、 以前の記事(Cocos2d-xでRPGツクールVX規定サイズのキャラチップ表示)でcocos2d-xのライブラリソースを直接弄って対応したのを プロジェクト側のビルドの設定で対応するようにしました。
いくらオープンソースでもいじりまくるとバージョンアップ時のマージが大変ですからね。。。
とりあえず直近で必要だったiOSとAndroidのみの紹介です。
iOS
Xcode上でcoco2d_lib.xcodeprojを選択。
Preprocessor Macrosで検索絞込んで、DebugとReleaseのBuildSettingsに以下を追加。 (緑色になっている箇所をダブルクリックで吹き出しみたいなのが表示されます)
CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL=1
iOSはこれで終わり。
Debugの方はデバッグビルド時だけの設定でReleaseの方はリリースビルド時の設定です。
余談ですが、「COCOS2D_DEBUG=1」を「COCOS2D_DEBUG=0」にするとCCLOGのログ出力がされなくなります。
他にもCCAssertで落としている箇所がCCAssertを呼ばないで実行されるようになります(パフォーマンス考慮かと)
Android
たぶんiOSより簡単です。 以下のmakeファイルにパラメータを追加するだけです。
ファイル
proj.android/jni/Application.mk
追加するパラメータ
-DCC_FIX_ARTIFACTS_BY_STRECHING_TEXEL=1
before
APP_STL := gnustl_static APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -DCOCOS2D_DEBUG=1 -std=c++11 -fsigned-char
after
APP_STL := gnustl_static APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -DCOCOS2D_DEBUG=1 -DCC_FIX_ARTIFACTS_BY_STRECHING_TEXEL=1 -std=c++11 -fsigned-char
こちらはiOSと違ってデバッグビルドとリリースビルドで分かれてないみたいなので開発時のままリリースしちゃう可能性がありますね。怖い怖い
動作確認
念のためデバッグで止めて確認してみました。 ちゃんと#ifdefのifに入ってますね。
これで直接弄ったソースはなくなったので、ドンドンアップデートきていいよ!!
Cocos2d-x 3.0正式版リリース待ってます。