2016-10-04 14 views
1

Обычно мы либо создать спрайт из спрайтов кадра, файла или текстуры, делая что-то вроде:Как создать белый квадрат как спрайт, не загружая файл изображения?

Sprite* foo = Sprite::create(filename); 

Как можно создать белый квадрат заданных размеров без использования DrawNode или передачи файла в спрайт?

Я знаю, что это возможно, потому что я наткнулся на другой пост, который описал, как это сделать, но забыл забронировать пометить его, и сообщение не отображается в результатах поиска ..

ответ

4

Что-то вроде этого :

auto dataLen = width * height * bitsPerPixel * sizeof(unsigned char); 
auto data = static_cast<unsigned char*>(malloc(dataLen)); 
memset(data, 255, dataLen); 
auto texture = new Texture2D(); 
texture->initWithData(data, dataLen, Texture2D::PixelFormat::RGBA8888, width, height, Size(width, height)); 
auto sprite = Sprite::createWithTexture(texture); 
1

Вы также можете попробовать использовать строку в кодировке base64 для создания спрайта, есть некоторые интернет-преобразователи для вывода такого формата.

+0

jajajaja Моя цель состояла в том, чтобы генерировать изображение без внешних файлов или хранить какую-либо вещь (даже небольшой код base64) .... таким образом, из одного пикселя мы можем рисовать что угодно ... и делать больше и большие спрайты .... отличные вещи от маленьких начал! Принятый ответ - это то, что я искал ... реквизит для предложения! –