3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Cocos2d-x】プロジェクト全体でアンチエイリアスを無効にする

Last updated at Posted at 2019-12-25

環境

cocos2d-x 3.17.2
C++

アンチエイリアス無効化

cocos2d-xではデフォルトでアンチエイリアスが有効になっていて、無効にするためには


auto sprite = Sprite::create("image.png");
sprite->getTexture()->setAliasTexParameters();

このようにSpriteLabelのインスタンスを作る度にsetAliasTexParameters()を呼んであげる必要があります。
(※ただ同じ画像だとアンチエイリアスの設定が共有されるっぽい。)

ドットゲーを作るときなどはいちいち呼ぶのは面倒なのでアンチエイリアス無効をデフォルトにしたいですが、どうやらそういった機能は用意されていないようです。

Sprite等を継承してコンストラクタでsetAliasTexParameters()を呼ぶというのもアリですが、
今回はプロジェクト内のcocos2d-xのソースを直接弄ってこれを解決しようと思います。

ソースを書き換える

プロジェクトフォルダ内の
cocos2d/cocos/renderer/CCTexture2D.cpp
cocos2d/cocos/2d/CCFontAtlas.cpp
を編集します。

それぞれクラスTexture2D, FontAtlasのコンストラクタの初期化子リストで
_antialiasEnabledというメンバがtrueで初期化されています。
これをfalseにしてやります。

まず、CCTexture2D.cppの446行目

CCTexture2D.cpp
, _antialiasEnabled(false)

に変更。

CCFontAtlas.cppは54行目で同様に

CCFontAtlas.cpp
, _antialiasEnabled(false)

に変更。

480×320のウインドウに
次の16×16ピクセルの画像を10倍の大きさで表示してみます。

HelloWorld.png

変更前

AliasExample 2019_12_25 22_51_19.png

変更後

AliasExample 2019_12_25 22_50_49.png

その他

スプライトもフォントもドットなら、アンチエイリアス無効に加えて

AppDelegate.cpp
glview->setDesignResolutionSize(240, 120, ResolutionPolicy::NO_BORDER);

のように仮想解像度を小さくしてしまうのもいいかと思います。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?