From b425c9b8d2b132a4e93026d708121b0d77cc6332 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Sat, 7 Dec 2013 22:25:34 -0500 Subject: [PATCH] add ScreenSaver.draw_letter() --- src/screensaver.d | 44 +++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/src/screensaver.d b/src/screensaver.d index b504f4c..4f99aec 100644 --- a/src/screensaver.d +++ b/src/screensaver.d @@ -7,6 +7,9 @@ import glamour.vbo; import gl3n.linalg; static import logo; +immutable int N_GENTEX = 6; +immutable int N_CORPORATION = 11; + class ScreenSaver { protected int m_width; @@ -20,7 +23,6 @@ class ScreenSaver protected void init() { - logo.init(); glClearColor (0.0, 0.0, 0.0, 0.0); glViewport(0, 0, m_width, m_height); immutable string shader_src = ` @@ -45,6 +47,20 @@ class ScreenSaver m_color_idx = m_program.get_uniform_location("color"); } + protected void draw_letter(int word, int character) + { + float color[] = + (word == logo.GENTEX) + ? [0.0, 93.0/255.0, 171.0/255.0] + : [187.0/255.0, 188.0/255.0, 190.0/255.0]; + glUniform3fv(m_color_idx, 1, color.ptr); + logo.draw(logo.FACE, word, character, m_position_idx); + + color = [1.0, 1.0, 1.0]; + glUniform3fv(m_color_idx, 1, color.ptr); + logo.draw(logo.WIRE, word, character, m_position_idx); + } + protected void display() { mat4 view_matrix; @@ -58,30 +74,14 @@ class ScreenSaver m_program.bind(); glUniformMatrix4fv(m_view_idx, 1, GL_TRUE, view_matrix.value_ptr); - float[] color = [0.0, 93.0/255.0, 171.0/255.0]; - glUniform3fv(m_color_idx, 1, color.ptr); - for (int i = 0; i < 6; i++) + for (int i = 0; i < N_GENTEX; i++) { - logo.draw(logo.FACE, logo.GENTEX, i, m_position_idx); + draw_letter(logo.GENTEX, i); } - color = [187.0/255.0, 188.0/255.0, 190.0/255.0]; - glUniform3fv(m_color_idx, 1, color.ptr); - for (int i = 0; i < 11; i++) + for (int i = 0; i < N_CORPORATION; i++) { - logo.draw(logo.FACE, logo.CORPORATION, i, m_position_idx); - } - - color = [1.0, 1.0, 1.0]; - glUniform3fv(m_color_idx, 1, color.ptr); - for (int i = 0; i < 6; i++) - { - logo.draw(logo.WIRE, logo.GENTEX, i, m_position_idx); - } - - for (int i = 0; i < 11; i++) - { - logo.draw(logo.WIRE, logo.CORPORATION, i, m_position_idx); + draw_letter(logo.CORPORATION, i); } SDL_GL_SwapWindow(m_window); @@ -123,6 +123,8 @@ class ScreenSaver DerelictGL3.reload(); SDL_ShowCursor(0); + + logo.init(); } void run()