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

#cocos2d-x #cocos2d-x-3.0 #cocos2d-x-3.x

#cocos2d-x #cocos2d-x-3.0 #cocos2d-x-3.x

Вопрос:

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

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

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

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

Ответ №1:

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

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

Ответ №2:

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

Комментарии:

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