Shut the fuck up and write some code

グダグダ言わずにコードを書きたいブログ

塗り潰しの矩形を描画する

cocos2dのプリミティブ描画周りを触ってみた。見ると矩形描画のメソッドが無い。なのでccDrawPolyかccDrawPointを使うしかないのだけど、ccDrawPolyは線は描画出来るが、塗り潰しは出来ない。ccDrawPointは塗り潰した状態で矩形を書けるけれども、中心座標が画面外になると描画されないみたい。一部だけ画面外に出ている状態というのは描画出来ない。これは使えない・・・。

なのでopenGLで自力で書くしかない。描画メソッドを用意。

-(void)drawSolidPoly:(CGPoint *)poli points:(int)points closePolygon:(BOOL)closePolygon
{
    glDisable(GL_TEXTURE_2D);
    glDisableClientState(GL_TEXTURE_COORD_ARRAY);
    glDisableClientState(GL_COLOR_ARRAY);
    
    glVertexPointer(2, GL_FLOAT, 0, poli);
    if( closePolygon )
        glDrawArrays(GL_TRIANGLE_FAN, 0, points);
    else
        glDrawArrays(GL_LINE_STRIP, 0, points);
    
    glEnableClientState(GL_COLOR_ARRAY);
    glEnableClientState(GL_TEXTURE_COORD_ARRAY);
    glEnable(GL_TEXTURE_2D);
    
}

こんな感じで使う。

    CGPoint points[] = {ccp(-width/2,-height/2), ccp(-width/2,height/2), ccp(width/2,height/2), ccp(width/2,-height/2) };
    [self drawSolidPoly:points points:4 closePolygon:YES];   

調べたら分かったけど、openGLはおの字も知らないので今後困りそうだ。やっぱり知っておかないとダメなのか!openGL勉強します。