UI rendering fix: visit the tree first, setup OpenGL next

This commit is contained in:
Nikita Lisitsa 2021-03-06 18:30:15 +03:00
parent 05b50d2826
commit f40d98cb2f

View file

@ -173,6 +173,15 @@ namespace psemek::ui
void controller::render(gfx::render_target const & rt)
{
auto visitor = util::recursive([&](auto && self, element * elem) -> void {
if (elem->hidden()) return;
elem->draw(impl().painter);
for (auto c : elem->children())
if (c) self(c);
});
visitor(impl().root.get());
rt.bind();
gl::Enable(gl::DEPTH_TEST);
@ -183,15 +192,6 @@ namespace psemek::ui
gl::Disable(gl::CULL_FACE);
auto visitor = util::recursive([&](auto && self, element * elem) -> void {
if (elem->hidden()) return;
elem->draw(impl().painter);
for (auto c : elem->children())
if (c) self(c);
});
visitor(impl().root.get());
impl().painter.render(geom::window_camera{rt.viewport[0].length(), rt.viewport[1].length()}.transform());
}