我正在尝试使用cocos2d-x中的CCTexture2D创建一个矩形精灵。这是我的代码。
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是如何工作的)。
提前致谢。
答案 0 :(得分:1)
如果你得到的是蓝色而不是红色,请尝试将索引1或2设置为255时得到的结果。也许像素数据的布局实际上是BGR。它看起来确实如此。
如果情况并非如此,则可能是由于纹理必须具有2x2或4x4像素的最小尺寸(您的是1x1)。您可能想尝试使用4x4纹理和相应大小的数据缓冲区。
请注意,您只需编写buffer[3]=255;
,因为缓冲区已经"大小为"一组GLubyte。没有必要使用sizeof作为索引。