如何清除单个像素?
how to clear individual pixels?
如何清除原始数据(unsigned char*)中的单个像素?
数据是通过这种方法渲染纹理得到的:
unsigned char* data = rt->newImage();
无论如何我可以做到这一点 (clear/erase) 原始数据中的单个像素......也许我可以用 OpenGL 或其他东西对其应用一些混合模式......但我该怎么做在对原始数据进行操作时。
无论如何,我只想使用任何可用的方法清除一些像素。
原始数据为rgba8888(32位)
试试这个:
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。但是像素必须是邻居。
如何清除原始数据(unsigned char*)中的单个像素?
数据是通过这种方法渲染纹理得到的:
unsigned char* data = rt->newImage();
无论如何我可以做到这一点 (clear/erase) 原始数据中的单个像素......也许我可以用 OpenGL 或其他东西对其应用一些混合模式......但我该怎么做在对原始数据进行操作时。
无论如何,我只想使用任何可用的方法清除一些像素。
原始数据为rgba8888(32位)
试试这个:
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。但是像素必须是邻居。