FadingLogos: draw each logo separately

This commit is contained in:
Josh Holtrop 2013-12-16 22:09:30 -05:00
parent 8dc61686a9
commit aa981e928e

View File

@ -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; )