SDL_PIXELFORMAT_INDEX1MSB
创建的表面每个像素只有一位。你可以为 1 和 0 分别设置颜色。
SDL_Init(SDL_INIT_VIDEO);
SDL_Window * window = SDL_CreateWindow("", SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, 0);
SDL_Renderer * renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_PRESENTVSYNC);
const int width = SCREEN_WIDTH;
const int height = SCREEN_HEIGHT;
SDL_SetWindowMinimumSize(window, width, height);
SDL_RenderSetLogicalSize(renderer, width, height);
SDL_RenderSetIntegerScale(renderer, 1);
SDL_Surface * surface = SDL_CreateRGBSurfaceWithFormat(SDL_SWSURFACE,
width, height, 1, SDL_PIXELFORMAT_INDEX1MSB);
SDL_Color colors[2] = {{0, 0, 0, 255}, {255, 255, 255, 255}};
SDL_SetPaletteColors(surface->format->palette, colors, 0, 2);
while (!done) {
SDL_RenderClear(renderer);
SDL_Texture * screen_texture = SDL_CreateTextureFromSurface(renderer, surface);
SDL_RenderCopy(renderer, screen_texture, NULL, NULL);
SDL_RenderPresent(renderer);
SDL_DestroyTexture(screen_texture);
}
Links:
https://wiki.libsdl.org/SDL_Surface
https://wiki.libsdl.org/SDL_PixelFormatEnum
SDL_PIXELFORMAT_INDEX1MSB
(首选)和SDL_PIXELFORMAT_INDEX1LSB
。每像素的位数仍然至少为8,但应易于转换为真正的每像素1位自定义格式。 - NelfealSDL_PIXELFORMAT_INDEX8
格式。然后只需将图像中的每个像素映射为0或1即可。 - Mark Benningfield