add ScreenSaver.draw_letter()

This commit is contained in:
Josh Holtrop 2013-12-07 22:25:34 -05:00
parent 241c66e56c
commit b425c9b8d2

View File

@ -7,6 +7,9 @@ import glamour.vbo;
import gl3n.linalg; import gl3n.linalg;
static import logo; static import logo;
immutable int N_GENTEX = 6;
immutable int N_CORPORATION = 11;
class ScreenSaver class ScreenSaver
{ {
protected int m_width; protected int m_width;
@ -20,7 +23,6 @@ class ScreenSaver
protected void init() protected void init()
{ {
logo.init();
glClearColor (0.0, 0.0, 0.0, 0.0); glClearColor (0.0, 0.0, 0.0, 0.0);
glViewport(0, 0, m_width, m_height); glViewport(0, 0, m_width, m_height);
immutable string shader_src = ` immutable string shader_src = `
@ -45,6 +47,20 @@ class ScreenSaver
m_color_idx = m_program.get_uniform_location("color"); 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() protected void display()
{ {
mat4 view_matrix; mat4 view_matrix;
@ -58,30 +74,14 @@ class ScreenSaver
m_program.bind(); m_program.bind();
glUniformMatrix4fv(m_view_idx, 1, GL_TRUE, view_matrix.value_ptr); glUniformMatrix4fv(m_view_idx, 1, GL_TRUE, view_matrix.value_ptr);
float[] color = [0.0, 93.0/255.0, 171.0/255.0]; for (int i = 0; i < N_GENTEX; i++)
glUniform3fv(m_color_idx, 1, color.ptr);
for (int i = 0; i < 6; 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]; for (int i = 0; i < N_CORPORATION; i++)
glUniform3fv(m_color_idx, 1, color.ptr);
for (int i = 0; i < 11; i++)
{ {
logo.draw(logo.FACE, logo.CORPORATION, i, m_position_idx); draw_letter(logo.CORPORATION, i);
}
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);
} }
SDL_GL_SwapWindow(m_window); SDL_GL_SwapWindow(m_window);
@ -123,6 +123,8 @@ class ScreenSaver
DerelictGL3.reload(); DerelictGL3.reload();
SDL_ShowCursor(0); SDL_ShowCursor(0);
logo.init();
} }
void run() void run()