gpt4 book ai didi

c - 如何在 SDL 2 中使用调色板

转载 作者:太空狗 更新时间:2023-10-29 15:26:18 29 4
gpt4 key购买 nike

我正在将程序从 SDL 1 更新到 SDL 2,并且需要使用调色板。最初,我使用了 SDL_SetColors(screen, color, 0, intColors); 但这在 SDL 2 中不起作用。我正在尝试使用:

SDL_Palette *palette = (SDL_Palette *)malloc(sizeof(color)*intColors);
SDL_SetPaletteColors(palette, color, 0, intColors);
SDL_SetSurfacePalette(surface, palette);

但是 SDL_SetPaletteColors() 返回 -1 并失败。 SDL_GetError 没有给我任何信息。

如何从 SDL_Color 制作调色板,然后将其设置为表面的调色板?

最佳答案

如果不查看您的声明,很难说出您的变量是什么以及您打算如何使用它们。

下面是我在 SDL_gpu 中设置灰度调色板的方法:

SDL_Color colors[256];
int i;

for(i = 0; i < 256; i++)
{
colors[i].r = colors[i].g = colors[i].b = (Uint8)i;
}

#ifdef SDL_GPU_USE_SDL2
SDL_SetPaletteColors(result->format->palette, colors, 0, 256);
#else
SDL_SetPalette(result, SDL_LOGPAL, colors, 0, 256);
#endif

结果 SDL_Surface 已经有一个调色板,因为它有一个 8 位像素深度(参见 https://wiki.libsdl.org/SDL_Palette 中的注释)。

关于c - 如何在 SDL 2 中使用调色板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29609544/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com