diff --git a/src/modes/fading_logos.d b/src/modes/fading_logos.d index 6cb5c43..b328e79 100644 --- a/src/modes/fading_logos.d +++ b/src/modes/fading_logos.d @@ -46,13 +46,22 @@ class FadingLogos : Mode glClear(GL_COLOR_BUFFER_BIT); - mat4 view_matrix; - view_matrix.make_identity(); - view_matrix.scale(ss.get_height() / cast(float)ss.get_width(), 1.0, 1.0); - const double scale = 0.35 * ss.get_aspect() * (1080.0 / 1920.0); - view_matrix.scale(scale, scale, scale); + foreach (LogoParams lp; m_logos) + { + draw_logo(lp, ss); + } + } - glUniformMatrix4fv(m_shader.view_idx, 1, GL_TRUE, view_matrix.value_ptr); + protected void draw_logo(LogoParams lp, ScreenSaver ss) + { + mat4 matrix; + matrix.make_identity(); + matrix.scale(lp.scale, lp.scale, lp.scale); + matrix.rotatez(lp.rotation); + matrix.translate(lp.c_x, lp.c_y, 0); + const double multi_monitor_scale = 0.35 * ss.get_aspect() * (1080.0 / 1920.0); + matrix.scale(multi_monitor_scale / ss.get_aspect(), multi_monitor_scale, multi_monitor_scale); + glUniformMatrix4fv(m_shader.view_idx, 1, GL_TRUE, matrix.value_ptr); for (int i = 0; i < logo.N_GENTEX; i++) { @@ -91,6 +100,7 @@ class FadingLogos : Mode lp.rotation = uniform(0.0, math.PI * 2.0); lp.scale = uniform(0.2, 1.0); m_logos ~= lp; + m_last_create_time = ms; } for (uint i = 0; i < m_logos.length; )