69 lines
1.6 KiB
C++
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
|