2

ランダムな地形生成に使用する高さマップを表す256x256のdoubleの配列があります。現在、配列内の要素ごとに1つのピクセルスプライトを作成し、それに応じて色を付けることで、非常に非効率的な方法で地形を表示しています。これにより、256x256のスプライトが残ります。もちろん、非常に多くの小さなスプライトを処理するのではなく、この配列からテクスチャをレンダリングしたり、スプライトや画像を作成したりする方法を見つけたいと思います。Cocos2d(具体的にはCocos2d-x)でこれを達成する方法はありますか?私は自分で何も見つけることができませんでした。

4

1 に答える 1

2

cocos2d-iphoneでは[CCTexture2D initWithData:pixelFormat:pixelsWide:pixelsHigh:contentSize:]、テクスチャを作成するために使用できます。次に、を使用[CCSprite spriteWithTexture:]してスプライトを作成します。cocos2d-xには対応するメソッドがあるはずです

pixelFormatの場合、次のようにデータバッファを作成しますkCCTexture2DPixelFormat_RGBA8888

int width = 256;
int height = 256;
GLubyte *buffer = malloc(sizeof(GLubyte)*4*256);
for (int x=0; x<width; x++) {
    for (int y=0; y<height; y++) {
    // convert your doubles to pixels, here I just create a white pixel value
        for (int i=0;i<4;i++) {
            buffer[x*width*4+y*4+i]=255;
        }
    }
}

次に、上記の方法でスプライトを作成します。

于 2013-02-18T00:44:08.147 に答える