Cocos2d: Как мне сгенерировать текстуру, спрайт или изображение из 2D-массива?

У меня есть массив двойных 256×256, представляющий карту высот, которую я использую для случайного генерирования местности. В настоящее время я отображаю ландшафт крайне неэффективно, создавая спрайт в один пиксель для каждого элемента в массиве и соответствующим образом окрашивая его. Это оставляет мне 256×256 спрайтов, я, конечно, хотел бы найти способ визуализации текстуры или создания спрайта или изображения из этого массива, вместо того, чтобы иметь дело с таким большим количеством крошечных спрайтов. Есть ли способ сделать это в Cocos2d (в частности, Cocos2d-x)? Я не смог ничего найти сам.

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;
}
}
}

Затем создайте свой спрайт с помощью методов, упомянутых выше.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector