Я пытаюсь создать прямоугольный спрайт с помощью CCTexture2D в cocos2d-x. Вот мой код
CCSprite *sprite = CCSprite::create();
GLubyte buffer[sizeof(GLubyte)*4];
buffer[0]=255;
buffer[sizeof(GLubyte)]=0;
buffer[sizeof(GLubyte)*2]=0;
buffer[sizeof(GLubyte)*3]=255;
CCTexture2D *texture = new CCTexture2D;
CCSize size = CCSize(100, 100);
texture->initWithData(buffer, kCCTexture2DPixelFormat_RGB5A1, 1, 1, size);
sprite->setTexture(texture);
sprite->setTextureRect(CCRectMake(0, 0, size.width, size.height));
this->addChild(sprite, 1);
Проблема в том, что я не получаю ожидаемый цвет для прямоугольника. С вышеуказанными значениями буфера я получаю синий цвет. Я не уверен, как дать значения для GLubyte (также я не знаю, как работает GLubyte).
Заранее спасибо.
Если вы получаете синий вместо красного, попробуйте то, что вы получите, установив для индекса 1 или 2 значение 255. Возможно, расположение данных пикселей на самом деле BGR. Это, конечно, кажется, что это так.
Если это не так, это может быть связано с тем, что текстура должна иметь минимальный размер 2×2 или 4×4 пикселей (у вас 1×1). Вы можете попробовать использовать текстуру 4×4 и буфер данных соответствующего размера.
Обратите внимание, что вы можете просто написать buffer[3]=255;
потому что буфер уже «измерен как» массив GLubyte. Там нет необходимости использовать sizeof для индексов.