당신을 위해 내 솔루션입니다 : 스프라이트에서
CCImage *img= new CCImage();
img->initWithImageFile("colors.png");
II) :
> RenderTexture2D
II.2) RenderTexture2D - -
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' 값에 접근 할 수 있습니다. 이것은 읽기 ('xxx = * 픽셀')와 쓰기 ('* 픽셀 = xxx') 접근입니다. (G에'* (pixel + 1)'사용) – Emadpres
* data = new unsigned .....를 수행하여 메모리를 새기고 있지 않다가 다음 라인에서 data = img-> getData()? –