2014-09-20 2 views
0

Я пытаюсь создать прямоугольник спрайт, используя CCTexture2D в cocos2d-x. Вот мой код.Настройка прямоугольника цвет текстуры в 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

Если вы получили синий цвет вместо красного цвета, попробуйте то, что вы получите, когда вы установите индекс 1 или от 2 до 255. Возможно, компоновка пиксельных данных на самом деле является BGR. Кажется, это так.

Если это не так, это может быть из-за того, что текстура должна иметь минимальный размер 2x2 или 4x4 пикселей (ваш 1x1). Вы можете попробовать с текстурой 4x4 и буфером данных соответствующего размера.

Обратите внимание, что вы можете просто написать buffer[3]=255;, потому что буфер уже «задан как» массив GLubyte. Нет необходимости использовать sizeof для индексов.