C 如何使用memset为像素阵列添加颜色?

C 如何使用memset为像素阵列添加颜色?,c,sdl,pixel,sdl-2,memset,C,Sdl,Pixel,Sdl 2,Memset,我有一个用C和SDL2编写的带有像素阵列的程序: Uint32 *pixels = NULL; pixels = (Uint32 *) malloc (sizeof(Uint32)*(Uint32)windowWidth*(Uint32)windowHeight); memset(pixels, 255, (Uint32)windowWidth*(Uint32)windowHeight*sizeof(Uint32)); 使用memset,使我的第二个参数“255”将所有像素设置为白色。下面每隔

我有一个用C和SDL2编写的带有像素阵列的程序:

Uint32 *pixels = NULL;
pixels = (Uint32 *) malloc (sizeof(Uint32)*(Uint32)windowWidth*(Uint32)windowHeight);
memset(pixels, 255, (Uint32)windowWidth*(Uint32)windowHeight*sizeof(Uint32));
使用memset,使我的第二个参数“255”将所有像素设置为白色。下面每隔一个数字将像素设置为灰色。如何将这些像素设置为实际颜色

我使用这个像素阵列通过纹理和其他东西来设置屏幕颜色。纹理的像素格式为
argb888
,因此四色通道十六进制值应该可以工作,不是吗

SDL_UpdateTexture(texture, NULL, pixels, (int)((Uint32)windowWidth * sizeof(Uint32)));

我尝试过使用十六进制,例如
0xFFCC00FF
,但这只是将其设置为白色。

memset的问题是,它将相同的值复制到每个字节。您希望在具有4字节值的循环中使用
memcpy

Uint32 numPixels = (Uint32)windowWidth * (Uint32)windowHeight;
Uint32 color = (Uint32)0xFFCC00FF;
for (Uint32 i = 0; i < numPixels; ++i)
{
    memcpy(pixels + i * sizeof(Uint32), &color, sizeof(color));
}
Uint32 numPixels=(Uint32)窗口宽度*(Uint32)窗口高度;
Uint32颜色=(Uint32)0xFFCC00FF;
对于(Uint32 i=0;i
使用
循环:

Uint32 *pixels = NULL;
size_t nPixels = windowWidth * windowHeight;
pixels = malloc (sizeof (Uint32) * nPixels);
for (size_t c = 0; c < nPixels; c++) {
    pixels[c] = color;
}
Uint32*像素=NULL;
尺寸=窗宽*窗高;
像素=malloc(sizeof(Uint32)*nPixels);
对于(大小c=0;c
这不使用memset,但多亏@Banex,我才想出了一些有效的方法

Uint32 colour = (Uint32)0xFFCC00FF;
int i,j;
for(i=0;i<windowWidth;i++)
{
    for(j=0;j<windowHeight;j++)
    {
        pixels[i+j*windowWidth]=colour;
    }
}
Uint32颜色=(Uint32)0xFFCC00FF;
int i,j;

对于(i=0;我真的不明白为什么,但这在纹理上创建了薄的彩色线条,而不是纯色纹理。我确实使用了你的答案作为起点,谢谢。