Route render target binding through platform services

This commit is contained in:
2026-06-03 05:17:25 +02:00
parent 6652127545
commit 389cd93e68
10 changed files with 78 additions and 18 deletions

View File

@@ -620,11 +620,7 @@ void App::draw(float dt)
if (!vr_only)
{
#if __IOS__
[ios_view->glview bindDrawable];
#else
glBindFramebuffer(framebuffer_target(), default_framebuffer_id());
#endif
bind_main_render_target();
glViewport(off_x, off_y, (GLsizei)width, (GLsizei)height);
glEnable(scissor_test_state());
for (int i = 0; i < layout[main_id]->m_children.size(); i++)
@@ -947,7 +943,7 @@ void App::ui_thread_tick()
update(0);
render_task([this]
{
glBindFramebuffer(framebuffer_target(), default_framebuffer_id());
bind_default_render_target();
clear();
draw(0);
async_swap();
@@ -1039,7 +1035,7 @@ void App::ui_thread_main()
update(t_frame);
render_task([this, t_frame]
{
glBindFramebuffer(framebuffer_target(), default_framebuffer_id());
bind_default_render_target();
clear();
draw(t_frame);
async_swap();

View File

@@ -196,6 +196,8 @@ public:
void acquire_render_context();
void release_render_context();
void present_render_context();
void bind_default_render_target();
void bind_main_render_target();
void begin_render_capture_frame();
void end_render_capture_frame();
[[nodiscard]] bool platform_deletes_recorded_files_on_clear();

View File

@@ -237,6 +237,16 @@ void App::present_render_context()
active_platform_services().present_render_context();
}
void App::bind_default_render_target()
{
active_platform_services().bind_default_render_target();
}
void App::bind_main_render_target()
{
active_platform_services().bind_main_render_target();
}
void App::begin_render_capture_frame()
{
active_platform_services().begin_render_capture_frame();

View File

@@ -33,6 +33,8 @@ public:
virtual void acquire_render_context() = 0;
virtual void release_render_context() = 0;
virtual void present_render_context() = 0;
virtual void bind_default_render_target() = 0;
virtual void bind_main_render_target() = 0;
virtual void begin_render_capture_frame() = 0;
virtual void end_render_capture_frame() = 0;
[[nodiscard]] virtual bool deletes_recorded_files_on_clear() = 0;

View File

@@ -3,6 +3,7 @@
#include "app.h"
#include "app_core/document_platform_io.h"
#include "renderer_gl/opengl_capabilities.h"
#ifdef __ANDROID__
void displayKeyboard(bool pShow);
@@ -224,6 +225,22 @@ public:
#endif
}
void bind_default_render_target() override
{
glBindFramebuffer(
static_cast<GLenum>(pp::renderer::gl::framebuffer_target()),
pp::renderer::gl::default_framebuffer_id());
}
void bind_main_render_target() override
{
#if __IOS__
[App::I->ios_view->glview bindDrawable];
#else
bind_default_render_target();
#endif
}
void begin_render_capture_frame() override
{
}

View File

@@ -250,6 +250,18 @@ public:
win32_async_swap();
}
void bind_default_render_target() override
{
glBindFramebuffer(
static_cast<GLenum>(pp::renderer::gl::framebuffer_target()),
pp::renderer::gl::default_framebuffer_id());
}
void bind_main_render_target() override
{
bind_default_render_target();
}
void begin_render_capture_frame() override
{
win32_renderdoc_frame_start();