Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Cocos2d:如何从2D数组生成纹理、精灵或图像?_C++_Ios_Cocos2d Iphone_Cocos2d X - Fatal编程技术网

C++ Cocos2d:如何从2D数组生成纹理、精灵或图像?

C++ Cocos2d:如何从2D数组生成纹理、精灵或图像?,c++,ios,cocos2d-iphone,cocos2d-x,C++,Ios,Cocos2d Iphone,Cocos2d X,我有一个256x256的双倍数组,代表一个高度图,我用它来随机生成地形。目前,我通过为阵列中的每个元素创建一个单像素精灵并相应地对其着色,以一种极为低效的方式显示地形。这就给我留下了256x256个精灵,我当然想找到一种方法来渲染纹理,或者从这个数组中创建一个精灵或图像,而不必处理这么多的小精灵。有没有一种方法可以在Cocos2d(特别是Cocos2d-x)中实现这一点?我自己找不到任何东西。在cocos2d iphone中,您可以使用[CCTexture2D initWithData:pixe

我有一个256x256的双倍数组,代表一个高度图,我用它来随机生成地形。目前,我通过为阵列中的每个元素创建一个单像素精灵并相应地对其着色,以一种极为低效的方式显示地形。这就给我留下了256x256个精灵,我当然想找到一种方法来渲染纹理,或者从这个数组中创建一个精灵或图像,而不必处理这么多的小精灵。有没有一种方法可以在Cocos2d(特别是Cocos2d-x)中实现这一点?我自己找不到任何东西。

在cocos2d iphone中,您可以使用
[CCTexture2D initWithData:pixelFormat:pixelsWide:pixelsHigh:contentSize:
创建纹理。然后使用
[CCSprite spriteWithTexture:
创建精灵。cocos2d-x中应该有相应的方法

像这样为pixelFormat
kCCTexture2DPixelFormat\u 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;
        }
    }
}
int-width=256;
整数高度=256;
GLubyte*buffer=malloc(sizeof(GLubyte)*4*256);

对于(intx=0;xThanks),这非常有用。我还发现这非常有用。