使用SDL将RGBA转换为Uint

时间:2018-07-29 16:45:48

标签: c++

我正在将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与其他颜色结合起来,以将所有四个通道写入数组,并将所有四个通道写入图像。

感谢您的帮助。

0 个答案:

没有答案