#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)…. таким образом, из одного пикселя мы можем нарисовать что угодно… и создавайте все большие и большие спрайты…. великие дела из маленьких начинаний! Принятый ответ — это то, что я искал …. реквизит для предложения, хотя!