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

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

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

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

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

2 ответа

Решение

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

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

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

Другие вопросы по тегам