きょこみのーと

技術に関係ないほうのブログ

Cocos2d-xのCCTMXTiledMapで線がチラつくときの対応方法(その2)

はじめに

最近、仕事でAndroid上でCocos2d-xを使ったアプリをリリースしたのですが、 その際にCCLOGを出ないようにする対応をしました。

つまりビルドの設定でCocos2d-xのライブラリ側の#ifdef制御を変更できることがわかったので、 以前の記事(Cocos2d-xでRPGツクールVX規定サイズのキャラチップ表示)でcocos2d-xのライブラリソースを直接弄って対応したのを プロジェクト側のビルドの設定で対応するようにしました。

いくらオープンソースでもいじりまくるとバージョンアップ時のマージが大変ですからね。。。

とりあえず直近で必要だったiOSAndroidのみの紹介です。

iOS

Xcode上でcoco2d_lib.xcodeprojを選択。

f:id:kyokomi:20140102081010p:plain

Preprocessor Macrosで検索絞込んで、DebugとReleaseのBuildSettingsに以下を追加。 (緑色になっている箇所をダブルクリックで吹き出しみたいなのが表示されます)

CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL=1 

f:id:kyokomi:20140102081016p:plain

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に入ってますね。 f:id:kyokomi:20140102081022p:plain

これで直接弄ったソースはなくなったので、ドンドンアップデートきていいよ!!

Cocos2d-x 3.0正式版リリース待ってます。