Cocos2d:如何从2D数组生成纹理,子画面或图像?

时间:2013-02-18 00:19:52

标签: c++ ios cocos2d-iphone cocos2d-x

我有一个256x256的双精度数组,表示我用于随机地形生成的高度图。目前,我通过为数组中的每个元素创建单个像素精灵并相应地着色来以极低效的方式显示地形。这给我留下256x256精灵,我当然希望找到一种方法来渲染纹理或从这个数组创建一个精灵或图像,而不是必须处理这么多微小的精灵。有没有办法在Cocos2d(具体是Cocos2d-x)中实现这一目标?我自己找不到任何东西。

1 个答案:

答案 0 :(得分: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;
        }
    }
}

然后用上面提到的方法创建你的精灵。