jes-ruby/src/GUI.cc

69 lines
1.6 KiB
C++

#if 0
bool GUI::load()
{
glClearColor (0.0, 0.0, 0.0, 0.0);
m_font_manager = new FontManager();
if (!m_font_manager->load())
return false;
if (!load_shaders())
return false;
if (!load_buffers())
return false;
return true;
}
bool GUI::load_buffers()
{
static const GLint rect_coords[4][2] = {
{0, 0},
{1, 0},
{0, 1},
{1, 1},
};
m_rect_vbo = new GLBuffer();
if (!m_rect_vbo->create(GL_ARRAY_BUFFER, GL_STATIC_DRAW, &rect_coords, sizeof(rect_coords)))
{
std::cerr << "Failed to create rectangle VBO" << std::endl;
return false;
}
return true;
}
void GUI::resize()
{
GLint viewport_size[2];
SDL_GetWindowSize(m_window, &viewport_size[0], &viewport_size[1]);
glViewport(0, 0, viewport_size[0], viewport_size[1]);
for (int i = 0; i < PROGRAM_COUNT; i++)
{
m_programs[i]->use();
glUniform2iv(m_programs[i]->get_uniform("viewport_size"), 1, &viewport_size[0]);
}
}
void GUI::draw()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
SDL_GL_SwapWindow(m_window);
}
void GUI::draw_rect(int x, int y, int width, int height, float r, float g, float b, float a)
{
m_programs[PROGRAM_RECT]->use();
glUniform2i(m_programs[PROGRAM_RECT]->get_uniform("position"), x, y);
glUniform2i(m_programs[PROGRAM_RECT]->get_uniform("size"), width, height);
glUniform4f(m_programs[PROGRAM_RECT]->get_uniform("color"), r, g, b, a);
m_rect_vbo->bind();
glEnableVertexAttribArray(0);
glVertexAttribIPointer(0, 2, GL_INT, 0, 0);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
}
#endif