我正在将SDL_UpdateTexture()与Uint像素数组配合使用,以快速处理图像上的像素。我确保将图像制作为ARGB888,因此它应该支持alpha。
...
Uint32 * pixels = new Uint32[width * height];
...
int main(int argc, char* args[]) {
...
SDL_Texture * memframe = SDL_CreateTexture(renderer,
SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STATIC, width, height);
SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_BLEND);
}
如果我尝试使用以下函数设置数组中各个元素的值...
void SetPixel(Uint32 * pixelsi, site s1, colo colori) { //site is a custom struct containing a u and v coord
int x = s1.u; int y = s1.v;
Uint32 ucolor = RGB(colori.r, colori.g, colori.b);
if (int((y * width) + x) < width * height) {
if (int((y * width) + x) > 0) {
if (s1.u > 0 && s1.u < width) {
pixelsi[int((y * width) + x)] = ucolor;
}
}
}
}
...然后我可以设置像素的颜色。但是,我没有Alpha通道可以使用。我想将alpha与其他颜色结合起来,以将所有四个通道写入数组,并将所有四个通道写入图像。
感谢您的帮助。