*

GL_SCISSOR_TESTを使ったクリッピング

公開日: : 最終更新日:2013/11/20 cocos2d-x ,

Clipping

cocos2dでNodeの描画をクリッピングするにはCCClippingNodeやCGContextClipToMaskを使う方法などがあります。
これらはパスからマスク画像を作成することで任意の形にクリッピングできますが、
単にNodeのサイズでクリッピングしたい場合にコンテンツサイズが変化する状況では使いにくいと思います。
この場合GL_SCISSOR_TESTを使うのが簡単だと思います。

GL_SCISSOR_TESTを使ってクリッピング

やり方はCCNodeから派生したクラスでvisit関数を以下のように上書きするだけです。

static cocos2d::CCRect convertToWorldSpace(cocos2d::CCNode *node, const cocos2d::CCRect &r) {
    CCPoint leftBottom = r.origin;
    CCPoint rightTop = leftBottom + r.size;
    
    leftBottom = node->convertToWorldSpace(leftBottom);
    rightTop = node->convertToWorldSpace(rightTop);
    
    return CCRectMake(leftBottom.x, leftBottom.y, rightTop.x - leftBottom.x, rightTop.y - leftBottom.y);
}

void ClippingNode::visit() {
  CCRect bounds = CCRectMake(0, 0, this->getContentSize().width, this->getContentSize().height);
  bounds = ::convertToWorldSpace(this, bounds);

  glEnable(GL_SCISSOR_TEST);
  CCEGLView::sharedOpenGLView()->setScissorInPoints(bounds.getMinX(), bounds.getMinY(), bounds.size.width, bounds.size.height);
  CCNode::visit();
  glDisable(GL_SCISSOR_TEST);
}

クリッピング領域はWorld座標で指定するようです。

サンプルはいつもの場所です。

Sponsored Link

関連記事

internet_share.png

インターネット共有のステータスバーを表示させない

私の作っているアプリではcocos2d-xでCCEAGLViewを表示させるUIViewCo

記事を読む

teach_s.png

[eMon] English Monstersレビュー申請中

先日、新しいiOSアプリを審査に出しました。 English Monsters(略してeM

記事を読む

Screenshot-2013.11.14-03.18.26.png

Cocos2d-xでGaussianBlur(ぼかしフィルター)

cocos2d-xにGaussianBlurが見つけられず、ググっていたらサンプルをみつけまし

記事を読む

tmp.png

最近のAppStore審査【iOS8】

紹介動画でリジェクト!?(App Preview) AppStoreのアプリ紹介にに機能や

記事を読む

teach_s.png

English Monsters1.0がAppStoreの審査通過

English Monsterが遂にAppStoreで公開されました。 一度AppStor

記事を読む

emon.png

【イーモン】v1.5リリース

やっとv1.5リリースできました。 継続的にプレイを続けてもらえるように ゲームのバランス

記事を読む

sample.png

cocos2dxでhttp通信のprogressを表示する

cocos2d-xでは、ダウンロードの進捗を取得するインターフェイスが用意されていないような

記事を読む

cocos2d-xのSupporting IPv6-only Networks対応

2016年6月1日より、AppStoreに更新されるすべてのアプリは、IPv6-only netwo

記事を読む

no image

Renderer::visitRenderQueueで落ちる場合

Cocos2d-x v3にしてから描画で突然落ちる場合があり、 原因をたどっていくと、Re

記事を読む

no image

UIAlertのTextFieldでキーボードが表示されない(iOS7)

TextField付きのUIAlertViewでたまにキーボードが表示されないことがあり、 ながら

記事を読む

Sponsored Link

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Sponsored Link

  • 発音辞書イーモン
  • English Monsters
  • sLog(時間管理アプリ)
  • 生粋のC++プログラマーです。 最近は、Objective-Cやxcode、cocos2d-xなどを学びながらiPhoneアプリを開発しています。

Google+ Google
PAGE TOP ↑