2

我有一个 256x256 的双精度数组,表示我用于随机地形生成的高度图。目前,我通过为数组中的每个元素创建一个像素精灵并相应地对其进行着色,以一种非常低效的方式显示地形。这给我留下了 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 回答