在cocos2d-x中设置纹理的矩形颜色

时间:2014-09-20 12:50:59

标签: c++ cocos2d-x texture2d

我正在尝试使用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是如何工作的)。

提前致谢。

1 个答案:

答案 0 :(得分:1)

如果你得到的是蓝色而不是红色,请尝试将索引1或2设置为255时得到的结果。也许像素数据的布局实际上是BGR。它看起来确实如此。

如果情况并非如此,则可能是由于纹理必须具有2x2或4x4像素的最小尺寸(您的是1x1)。您可能想尝试使用4x4纹理和相应大小的数据缓冲区。

请注意,您只需编写buffer[3]=255;,因为缓冲区已经"大小为"一组GLubyte。没有必要使用sizeof作为索引。