FadingLogos: draw each logo separately
This commit is contained in:
parent
8dc61686a9
commit
aa981e928e
@ -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; )
|
||||
|
Loading…
x
Reference in New Issue
Block a user