如何清除个别像素?

时间:2015-12-03 09:43:28

标签: cocos2d-x opengl-es-2.0

如何清除原始数据中的单个像素(unsigned char *)?

数据来自这种方法的渲染纹理:

unsigned char* data = rt->newImage();

无论如何我可以做到(清除/擦除)原始数据中的单个像素...也许我可以使用OpenGL或其他东西对它应用一些混合模式......但是我怎么能这样做呢?原始数据。

无论如何,我只想用任何可用的方法清除一些像素。

原始数据是rgba8888(32位)。

1 个答案:

答案 0 :(得分:1)

试试这个:

bool CreatorScene::setPixel(int x, int y, int r, int g, int b, int a, unsigned char* data){
        if(x < 0 || x >= canvasWidth || y < 0 || y >= canvasHeight) return false;
        int index = (x + (canvasHeight - y - 1) * canvasWidth) * 4;

        data[index] = r;
        data[index + 1] = g;
        data[index + 2] = b;
        data[index + 3] = a;

        return true;
}

您还可以禁用坐标检查以提高性能。

对于更大的区域,您可以使用memset。但像素必须是邻居。