Add FlatProgram and RectProgram.

This commit is contained in:
Josh Holtrop 2020-12-08 20:34:41 -05:00
parent e215485293
commit 23cfdb1273

View File

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