Android Cocos2dX使用CGPoint阵列绘制形状

时间:2013-03-14 13:01:25

标签: android cocos2d-x ccsprite

我一直在研究一款安卓游戏,我需要创建一个影像破碎效果。我正在使用Cocos2dx进行游戏开发。

我将要粉碎的形状划分为小三角形并将它们存储到数组中,因为它位于Cocos2dx中,顶点数组是CGPoint数组。 例如

CGPoint[] vertices;

vertices[1]={CGPoint.ccp(0,0),CGPoint.ccp(1,0),CGPoint.ccp(1,1)}

vertices[2]={CGPoint.ccp(1,0),CGPoint.ccp(0,1),CGPoint.ccp(1,1)}
....
vertices[numVertices]={CGPoint.ccp(1,0),CGPoint.ccp(0,1),CGPoint.ccp(1,1)}

谈到绘图

我已将顶点数组转换为像这样的

的FloatBuffer
        ByteBuffer vbb = ByteBuffer.allocateDirect(4 * 2*3* numVertices);
        vbb.order(ByteOrder.nativeOrder());
        triVertices = vbb.asFloatBuffer();

在onDraw()方法中 这里pt1,pt2,pt3是CGPoints

         for(int i=0;i<numVertices;i++){

        triVertices.put(vertices[i].pt1.x);
        triVertices.put(vertices[i].pt1.y);
        triVertices.put(vertices[i].pt2.x);
        triVertices.put(vertices[i].pt2.y);
        triVertices.put(vertices[i].pt2.x);
        triVertices.put(vertices[i].pt2.y);
    }
    gl.glVertexPointer(2, GL10.GL_FLOAT, 0, triVertices);
    gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, triTexCoords);
    gl.glColorPointer(4, GL10.GL_UNSIGNED_BYTE, 0, colorBuffer);
    gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, numVertices*3);

不幸的是整个形状都没有被绘制出来。从某种意义上说,只有单个三角形被绘制出来。我的逻辑中有任何问题。请帮助我。它非常紧急。

修改

下面是我用来调用破坏类 ShatteredSprite.java 的代码,它扩展了CCSprite。

    CCSprite newSprite= CCSprite.sprite("bg-hand1.jpg");
    int piecesX = 20;
    int piecesY = 20;
    float speedVar = 0.5f;
    float rotVar = 0.2f;
    boolean radial = true;
    ShatteredSprite shatter =ShatteredSprite.shatterWithSprite(newSprite,
            piecesX,
            piecesY,
            speedVar,
            rotVar,
            radial);
    shatter.setAnchorPoint(CGPoint.make(0, 0));
    shatter.setPosition(CGPoint.ccp(100, 150));
    this.addChild(shatter, 1, 99);

现在破碎正在发生,但效果显示在右上角,所以只能看到它的一部分。如何使它正确。有任何想法。谢谢你。

0 个答案:

没有答案