Texture filtering options for OpenGL and Software video modes

Add renderer specific menu options.
This commit is contained in:
apartfromtime 2024-03-18 11:11:47 +11:00
parent 292bc0f632
commit 72de1d45f8

View file

@ -182,6 +182,9 @@ ResetDefaults(void *unused)
static void static void
ApplyFilter(void* unused) ApplyFilter(void* unused)
{ {
if (Q_stricmp(vid_renderer->string, "gl3") == 0 || Q_stricmp(vid_renderer->string, "gles3") == 0 ||
Q_stricmp(vid_renderer->string, "gl1") == 0)
{
if (s_filter_list.curvalue == 0) if (s_filter_list.curvalue == 0)
{ {
Cvar_Set("gl_texturemode", "GL_NEAREST"); Cvar_Set("gl_texturemode", "GL_NEAREST");
@ -194,6 +197,19 @@ ApplyFilter(void* unused)
{ {
Cvar_Set("gl_texturemode", "GL_LINEAR_MIPMAP_LINEAR"); Cvar_Set("gl_texturemode", "GL_LINEAR_MIPMAP_LINEAR");
} }
}
if (Q_stricmp(vid_renderer->string, "soft") == 0)
{
if (s_filter_list.curvalue == 0)
{
Cvar_Set("sw_texture_filtering", "0");
}
else if (s_filter_list.curvalue == 1)
{
Cvar_Set("sw_texture_filtering", "1");
}
}
} }
static void static void
@ -397,6 +413,12 @@ VID_MenuInit(void)
0 0
}; };
static const char *onoff_names[] = {
"off",
"on",
0
};
static const char *yesno_names[] = { static const char *yesno_names[] = {
"no", "no",
"yes", "yes",
@ -695,14 +717,21 @@ VID_MenuInit(void)
s_filter_list.generic.type = MTYPE_SPINCONTROL; s_filter_list.generic.type = MTYPE_SPINCONTROL;
s_filter_list.generic.name = "texture filter"; s_filter_list.generic.name = "texture filter";
s_filter_list.generic.x = 0;
s_filter_list.generic.y = (y += 10);
s_filter_list.itemnames = filter_names;
s_filter_list.curvalue = 0; s_filter_list.curvalue = 0;
s_filter_list.generic.callback = ApplyFilter; s_filter_list.generic.callback = ApplyFilter;
const char* filter = Cvar_VariableString("gl_texturemode"); const char* filter = NULL;
int mode = 3; int mode = 0;
if (Q_stricmp(vid_renderer->string, "gl3") == 0 || Q_stricmp(vid_renderer->string, "gles3") == 0 ||
Q_stricmp(vid_renderer->string, "gl1") == 0)
{
s_filter_list.generic.x = 0;
s_filter_list.generic.y = (y += 10);
s_filter_list.itemnames = filter_names;
filter = Cvar_VariableString("gl_texturemode");
mode = 3;
if (Q_stricmp(filter, "GL_NEAREST") == 0) if (Q_stricmp(filter, "GL_NEAREST") == 0)
{ {
@ -716,6 +745,21 @@ VID_MenuInit(void)
{ {
mode = 2; mode = 2;
} }
}
else if (Q_stricmp(vid_renderer->string, "soft") == 0)
{
s_filter_list.generic.x = 0;
s_filter_list.generic.y = (y += 10);
s_filter_list.itemnames = onoff_names;
filter = Cvar_VariableString("sw_texture_filtering");
mode = 0;
if (Q_stricmp(filter, "1") == 0)
{
mode = 1;
}
}
s_filter_list.curvalue = mode; s_filter_list.curvalue = mode;
@ -765,7 +809,11 @@ VID_MenuInit(void)
Menu_AddItem(&s_opengl_menu, (void *)&s_vsync_list); Menu_AddItem(&s_opengl_menu, (void *)&s_vsync_list);
Menu_AddItem(&s_opengl_menu, (void *)&s_af_list); Menu_AddItem(&s_opengl_menu, (void *)&s_af_list);
Menu_AddItem(&s_opengl_menu, (void *)&s_msaa_list); Menu_AddItem(&s_opengl_menu, (void *)&s_msaa_list);
if (Q_stricmp(vid_renderer->string, "gl3") == 0 || Q_stricmp(vid_renderer->string, "gles3") == 0 ||
Q_stricmp(vid_renderer->string, "gl1") == 0 || Q_stricmp(vid_renderer->string, "soft") == 0)
{
Menu_AddItem(&s_opengl_menu, (void *)&s_filter_list); Menu_AddItem(&s_opengl_menu, (void *)&s_filter_list);
}
Menu_AddItem(&s_opengl_menu, (void *)&s_defaults_action); Menu_AddItem(&s_opengl_menu, (void *)&s_defaults_action);
Menu_AddItem(&s_opengl_menu, (void *)&s_apply_action); Menu_AddItem(&s_opengl_menu, (void *)&s_apply_action);