1

私は必死にCocos2Dで塗りつぶされた正方形を描画しようとしていますが、その方法の例を見つけることができません:

これが私の描画方法です。正方形を描くことに成功しましたが、なんとか埋めることができません!

塗りつぶされた正方形を描画するにはglDrawArrays、パラメーターを指定して呼び出されるOpenGLメソッドを使用する必要があることを読みました。それを試しました。GL_TRIANGLE_FAN

-(void) draw
{
    // Disable textures - we want to draw with plaine colors
    ccGLEnableVertexAttribs( kCCVertexAttribFlag_Position | kCCVertexAttribFlag_Color );

    float l_fRedComponent = 0;
    float l_fGreenComponent = 0;
    float l_fBlueComponent = 0;
    float l_fAlphaComponent = 0;
    [mpColor getRed:&l_fRedComponent green:&l_fGreenComponent blue:&l_fBlueComponent alpha:&l_fAlphaComponent];

    ccDrawColor4F(l_fRedComponent, l_fGreenComponent, l_fBlueComponent, l_fAlphaComponent);
    glLineWidth(10);

    CGPoint l_bottomLeft, l_bottomRight, l_topLeft, l_topRight;
    l_bottomLeft.x = miPosX - miWidth / 2.0f;
    l_bottomLeft.y = miPosY - miHeight /  2.0f;
    l_bottomRight.x = miPosX + miWidth /  2.0f;
    l_bottomRight.y = miPosY - miHeight /  2.0f;
    l_topRight.x = miPosX + miWidth /  2.0f;
    l_topRight.y = miPosY + miHeight /  2.0f;
    l_topLeft.x = miPosX - miWidth /  2.0f;
    l_topLeft.y = miPosY + miHeight /  2.0f;

    CGPoint vertices[] = { l_bottomLeft, l_bottomRight, l_topRight, l_topLeft, l_bottomLeft };
    int l_arraySize = sizeof(vertices) / sizeof(CGPoint) ;

    // My old way of doing this, it draws a square, but not filled.
    //ccDrawPoly( vertices, l_arraySize, NO);

    // Deprecated method :(
    //glVertexPointer(2, GL_FLOAT, 0, vertices);

    // I've found something related to this method to replace the deprecated one, but can't understand this method !
    glVertexAttribPointer(kCCVertexAttrib_Position, 3, GL_FLOAT, GL_FALSE, 0, vertices);
    glDrawArrays(GL_TRIANGLE_FAN, 0, l_arraySize);  
}

古いバージョンのCocos2D(1.0)でいくつかの例を見つけましたが、バージョン2.0に「最近」アップグレードされたため、見つけたすべての例でコンパイルエラーが発生します。

誰かがここで私の道を教えてもらえますか?

4

2 に答える 2

7

今日が「車輪の再発明」の日だとは知りませんでした。:)

ccDrawSolidRect(CGPoint origin, CGPoint destination, ccColor4F color);

夢中になって塗りつぶされたポリゴンを描画したい場合は、次の方法もあります。

ccDrawSolidPoly(const CGPoint *poli, NSUInteger numberOfPoints, ccColor4F color);

「ソリッド」メソッドは、Cocos2D2.xの新機能です。

于 2012-10-02T19:21:27.740 に答える
0

必要なコンテンツサイズでCCLayerColorインスタンスを作成し、塗りつぶされた正方形として使用するだけです。それ以外の場合は、ポリゴンを三角測量し(正方形の場合は2つの三角形になります)、OpenGLを使用して描画する必要があります。

---編集このコードをテストしませんでした、グーグルでそれを見つけてください、しかしそれはうまくいくようです。

http://www.deluge.co/?q=cocos-2d-custom-filled-polygon

于 2012-10-02T18:11:28.407 に答える