Added support for linear and pixel art scaling for palettized textures

This commit is contained in:
Sam Lantinga
2025-10-04 14:16:02 -07:00
parent e1fde46a6a
commit 134b47730b
43 changed files with 11348 additions and 7598 deletions

View File

@@ -104,6 +104,7 @@ int main(int argc, char *argv[])
int i;
int frames;
Uint64 then, now;
SDL_ScaleMode scale_mode = SDL_SCALEMODE_PIXELART;
/* Initialize test framework */
state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO);
@@ -112,8 +113,34 @@ int main(int argc, char *argv[])
}
/* Parse commandline */
if (!SDLTest_CommonDefaultArgs(state, argc, argv)) {
return 1;
for (i = 1; i < argc;) {
int consumed;
consumed = SDLTest_CommonArg(state, i);
if (consumed == 0) {
consumed = -1;
if (SDL_strcasecmp(argv[i], "--nearest") == 0) {
scale_mode = SDL_SCALEMODE_NEAREST;
consumed = 1;
} else if (SDL_strcasecmp(argv[i], "--linear") == 0) {
scale_mode = SDL_SCALEMODE_LINEAR;
consumed = 1;
} else if (SDL_strcasecmp(argv[i], "--pixelart") == 0) {
scale_mode = SDL_SCALEMODE_PIXELART;
consumed = 1;
}
}
if (consumed < 0) {
static const char *options[] = {
"[--nearest]",
"[--linear]",
"[--pixelart]",
NULL
};
SDLTest_CommonLogUsage(state, argv[0], options);
return 1;
}
i += consumed;
}
if (!SDLTest_CommonInit(state)) {
@@ -132,7 +159,8 @@ int main(int argc, char *argv[])
quit(2);
}
SDL_GetTextureSize(drawstate->sprite, &drawstate->sprite_rect.w, &drawstate->sprite_rect.h);
SDL_SetTextureScaleMode(drawstate->sprite, SDL_SCALEMODE_PIXELART);
SDL_SetTextureScaleMode(drawstate->background, scale_mode);
SDL_SetTextureScaleMode(drawstate->sprite, scale_mode);
drawstate->scale_direction = 1;
}