ここではあなたのための私のソリューションです:ファイルから
I):
1.Firstは、あなたのイメージのCCImageバージョンを行います。スプライトから
CCImage *img= new CCImage();
img->initWithImageFile("colors.png");
II):
2.Then:
CCImage *img= ... // make CCImage from CCSprite
int x=3;
if(img->hasAlpha())
x=4;
unsigned char *data = new unsigned char[img->getDataLen()*x];
data = img->getData();
// [0][0] => Left-Top Pixel !
// But cocos2d Location Y-axis is Bottom(0) to Top(max)
for(int i=0;i<img->getWidth();i++)
{
for(int j=0;j<img->getHeight();j++)
{
unsigned char *pixel = data + (i + j * img->getWidth()) * x;
// You can see/change pixels' RGBA value(0-255) here !
unsigned char r = *pixel;
unsigned char g = *(pixel + 1);
unsigned char b = *(pixel + 2) ;
unsigned char a = *(pixel + 3);
}
}
3.テクスチャをtexture_2Dに変換します
//CCImage -> Texture2d
texture_2D= new CCTexture2D();
texture_2D->initWithImage(img);
4.Andは、最後に戻ってCCSprite
CCSprite *result= CCSprite::createWithTexture(texture_2D);
char r = *ピクセルを設定しているので、rgbaの値がどのように表示されるか分かります。しかし、どのようにピクセルの値を変更しますか?あなたが指針で何をやっているのかちょっと混乱しています。説明できますか ? –
@ジョンそれはほぼ同じです。わかったように、 '* pixel'ポインタを使って各ピクセルの' R'値にアクセスすることができました。これはRead( 'xxx = * pixel')とWrite(' * pixel = xxx')アクセスです。 ( 'G 'に' *(pixel + 1) 'を使用するなど) – Emadpres
* data = new unsigned .....を実行してメモリをリークしていないのであれば、次の行でdata = img-> getData ()? –