diff options
Diffstat (limited to 'src/osd/modules/render/drawbgfx.cpp')
-rw-r--r-- | src/osd/modules/render/drawbgfx.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/osd/modules/render/drawbgfx.cpp b/src/osd/modules/render/drawbgfx.cpp index 1806d749d66..fc9214fe446 100644 --- a/src/osd/modules/render/drawbgfx.cpp +++ b/src/osd/modules/render/drawbgfx.cpp @@ -25,6 +25,7 @@ extern void *GetOSWindow(void *wincontroller); // MAMEOS headers #include "emu.h" #include "window.h" +#include "render.h" #include "rendutil.h" #include "aviwrite.h" @@ -49,6 +50,8 @@ extern void *GetOSWindow(void *wincontroller); #include "bgfx/target.h" #include "bgfx/view.h" +#include "modules/lib/osdobj_common.h" + #include "imgui/imgui.h" //============================================================ @@ -1047,6 +1050,30 @@ void renderer_bgfx::setup_ortho_view() m_ortho_view->update(); } +render_primitive_list *renderer_bgfx::get_primitives() +{ + auto win = try_getwindow(); + if (win == nullptr) + return nullptr; + + // determines whether the screen container is transformed by the chain's shaders + bool chain_transform = false; + + // check the first chain + bgfx_chain* chain = this->m_chains->screen_chain(0); + if (chain != nullptr) + { + chain_transform = chain->transform(); + } + + osd_dim wdim = win->get_size(); + if (wdim.width() > 0 && wdim.height() > 0) + win->target()->set_bounds(wdim.width(), wdim.height(), win->pixel_aspect()); + + win->target()->set_transform_container(!chain_transform); + return &win->target()->get_primitives(); +} + renderer_bgfx::buffer_status renderer_bgfx::buffer_primitives(bool atlas_valid, render_primitive** prim, bgfx::TransientVertexBuffer* buffer, int32_t screen) { int vertices = 0; |