Как создать белый квадрат в виде спрайта, не загружая файл изображения?
Обычно мы создаем спрайт из фрейма спрайта, файла или текстуры, выполняя что-то вроде:
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 для создания спрайта, есть несколько онлайн-конвертеров для вывода такого формата.