mirror of
https://github.com/libretro/RetroArch
synced 2025-04-25 09:02:44 +00:00
Parametrize drop shadows.
This commit is contained in:
parent
d129ff3d13
commit
64cc0efefe
4
driver.h
4
driver.h
@ -347,7 +347,9 @@ struct font_params
|
|||||||
float x;
|
float x;
|
||||||
float y;
|
float y;
|
||||||
float scale;
|
float scale;
|
||||||
uint32_t color; // ABGR.
|
float drop_mod; // Drop shadow color multiplier.
|
||||||
|
int drop_x, drop_y; // Drop shadow offset. If both are 0, no drop shadow will be rendered.
|
||||||
|
uint32_t color; // ABGR. Use the macros.
|
||||||
bool full_screen;
|
bool full_screen;
|
||||||
};
|
};
|
||||||
#define FONT_COLOR_RGBA(r, g, b, a) (((r) << 0) | ((g) << 8) | ((b) << 16) | ((a) << 24))
|
#define FONT_COLOR_RGBA(r, g, b, a) (((r) << 0) | ((g) << 8) | ((b) << 16) | ((a) << 24))
|
||||||
|
@ -186,8 +186,9 @@ static void render_message(gl_raster_t *font, const char *msg, GLfloat scale, co
|
|||||||
|
|
||||||
static void gl_render_msg(void *data, const char *msg, const struct font_params *params)
|
static void gl_render_msg(void *data, const char *msg, const struct font_params *params)
|
||||||
{
|
{
|
||||||
GLfloat x, y, scale;
|
GLfloat x, y, scale, drop_mod;
|
||||||
GLfloat color[4], color_dark[4];
|
GLfloat color[4], color_dark[4];
|
||||||
|
int drop_x, drop_y;
|
||||||
bool full_screen;
|
bool full_screen;
|
||||||
|
|
||||||
gl_raster_t *font = (gl_raster_t*)data;
|
gl_raster_t *font = (gl_raster_t*)data;
|
||||||
@ -202,6 +203,9 @@ static void gl_render_msg(void *data, const char *msg, const struct font_params
|
|||||||
y = params->y;
|
y = params->y;
|
||||||
scale = params->scale;
|
scale = params->scale;
|
||||||
full_screen = params->full_screen;
|
full_screen = params->full_screen;
|
||||||
|
drop_x = params->drop_x;
|
||||||
|
drop_y = params->drop_y;
|
||||||
|
drop_mod = params->drop_mod;
|
||||||
|
|
||||||
color[0] = FONT_COLOR_GET_RED(params->color);
|
color[0] = FONT_COLOR_GET_RED(params->color);
|
||||||
color[1] = FONT_COLOR_GET_GREEN(params->color);
|
color[1] = FONT_COLOR_GET_GREEN(params->color);
|
||||||
@ -223,21 +227,27 @@ static void gl_render_msg(void *data, const char *msg, const struct font_params
|
|||||||
color[1] = g_settings.video.msg_color_g;
|
color[1] = g_settings.video.msg_color_g;
|
||||||
color[2] = g_settings.video.msg_color_b;
|
color[2] = g_settings.video.msg_color_b;
|
||||||
color[3] = 1.0f;
|
color[3] = 1.0f;
|
||||||
}
|
|
||||||
|
|
||||||
color_dark[0] = color[0] * 0.3f;
|
drop_x = -2;
|
||||||
color_dark[1] = color[1] * 0.3f;
|
drop_y = -2;
|
||||||
color_dark[2] = color[2] * 0.3f;
|
drop_mod = 0.3f;
|
||||||
color_dark[3] = color[3];
|
}
|
||||||
|
|
||||||
gl_set_viewport(gl, gl->win_width, gl->win_height, full_screen, false);
|
gl_set_viewport(gl, gl->win_width, gl->win_height, full_screen, false);
|
||||||
glEnable(GL_BLEND);
|
glEnable(GL_BLEND);
|
||||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||||
glBlendEquation(GL_FUNC_ADD);
|
glBlendEquation(GL_FUNC_ADD);
|
||||||
|
|
||||||
// TODO: Make drop shadows parameterized?
|
if (drop_x || drop_y)
|
||||||
|
{
|
||||||
|
color_dark[0] = color[0] * drop_mod;
|
||||||
|
color_dark[1] = color[1] * drop_mod;
|
||||||
|
color_dark[2] = color[2] * drop_mod;
|
||||||
|
color_dark[3] = color[3];
|
||||||
|
|
||||||
render_message(font, msg, scale, color_dark,
|
render_message(font, msg, scale, color_dark,
|
||||||
x - scale * 2.0f / gl->vp.width, y - scale * 2.0f / gl->vp.height);
|
x + scale * drop_x / gl->vp.width, y + scale * drop_y / gl->vp.height);
|
||||||
|
}
|
||||||
render_message(font, msg, scale, color, x, y);
|
render_message(font, msg, scale, color, x, y);
|
||||||
|
|
||||||
glDisable(GL_BLEND);
|
glDisable(GL_BLEND);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user