From 23cfdb1273d932f4b328179f652e50f9f30554ea Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Tue, 8 Dec 2020 20:34:41 -0500 Subject: [PATCH] Add FlatProgram and RectProgram. --- src/jes/gui/package.d | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/src/jes/gui/package.d b/src/jes/gui/package.d index bf7a3a1..4e6c654 100644 --- a/src/jes/gui/package.d +++ b/src/jes/gui/package.d @@ -8,8 +8,12 @@ import jes.gui.font; class Gui { jtk.Window[] m_windows; + alias FlatProgram = gltk.Program!("viewport_size", "2i", "color", "4f", "position", "2i"); alias TextProgram = gltk.Program!("viewport_size", "2i", "texture", "1i", "color", "4f", "position", "2i"); + alias RectProgram = gltk.Program!("viewport_size", "2i", "color", "4f", "position", "2i", "size", "2i"); + FlatProgram m_flat_program; TextProgram m_text_program; + RectProgram m_rect_program; int width; int height; @@ -35,16 +39,30 @@ class Gui } } + private gltk.Shader build_shader(GLenum shader_type, string filename) + { + auto shader = new gltk.Shader(shader_type); + shader.set_source_from_file(filename); + return shader; + } + private void load() { static bool loaded = false; if (!loaded) { - auto v_shader = new gltk.Shader(GL_VERTEX_SHADER); - v_shader.set_source_from_file("share/jes/shaders/text.v.glsl"); - auto f_shader = new gltk.Shader(GL_FRAGMENT_SHADER); - f_shader.set_source_from_file("share/jes/shaders/text.f.glsl"); - m_text_program = new TextProgram(v_shader, f_shader, "coords", 0); + m_flat_program = new FlatProgram( + build_shader(GL_VERTEX_SHADER, "share/jes/shaders/flat.v.glsl"), + build_shader(GL_FRAGMENT_SHADER, "share/jes/shaders/flat.f.glsl"), + "coords", 0); + m_text_program = new TextProgram( + build_shader(GL_VERTEX_SHADER, "share/jes/shaders/text.v.glsl"), + build_shader(GL_FRAGMENT_SHADER, "share/jes/shaders/text.f.glsl"), + "coords", 0); + m_rect_program = new RectProgram( + build_shader(GL_VERTEX_SHADER, "share/jes/shaders/rect.v.glsl"), + build_shader(GL_FRAGMENT_SHADER, "share/jes/shaders/rect.f.glsl"), + "coords", 0); glActiveTexture(GL_TEXTURE0); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);