【问题标题】:Setting rectangle color of texture in cocos2d-xcocos2d-x中设置纹理的矩形颜色
【发布时间】:2014-09-20 21:53:31
【问题描述】:

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

提前致谢。

【问题讨论】:

    标签: c++ cocos2d-x texture2d


    【解决方案1】:

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

    如果不是这种情况,可能是因为纹理的最小尺寸必须为 2x2 或 4x4 像素(您的是 1x1)。您可能想尝试使用 4x4 纹理和相应大小的数据缓冲区。

    请注意,您可以只写buffer[3]=255;,因为缓冲区已经“大小”为 GLubyte 数组。索引不需要使用 sizeof。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-20
      • 2018-03-18
      • 1970-01-01
      • 2018-02-26
      • 2016-06-21
      • 1970-01-01
      相关资源
      最近更新 更多