summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/render/bgfx/view.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/osd/modules/render/bgfx/view.h')
-rw-r--r--src/osd/modules/render/bgfx/view.h68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/osd/modules/render/bgfx/view.h b/src/osd/modules/render/bgfx/view.h
new file mode 100644
index 00000000000..95d4f419975
--- /dev/null
+++ b/src/osd/modules/render/bgfx/view.h
@@ -0,0 +1,68 @@
+// license:BSD-3-Clause
+// copyright-holders:Ryan Holtz
+
+#pragma once
+
+#include "window.h"
+
+class renderer_bgfx;
+class bgfx_target;
+
+class bgfx_view {
+public:
+ bgfx_view(renderer_bgfx *renderer, uint32_t index, bgfx_target *backbuffer, std::vector<uint32_t> &seen_views)
+ : m_renderer(renderer)
+ , m_index(index)
+ , m_backbuffer(backbuffer)
+ , m_seen_views(seen_views)
+ , m_window_index(UINT_MAX)
+ , m_view_width(0)
+ , m_view_height(0)
+ , m_z_near(0.0f)
+ , m_z_far(100.0f)
+ , m_clear_color(0)
+ , m_clear_depth(1.0f)
+ , m_clear_stencil(0)
+ , m_do_clear_color(true)
+ , m_do_clear_depth(true)
+ , m_do_clear_stencil(false) {
+ }
+ virtual ~bgfx_view() { }
+
+ void update();
+
+ void set_backbuffer(bgfx_target *backbuffer) { m_backbuffer = backbuffer; }
+ void set_index(uint32_t index) { m_index = index; }
+ uint32_t get_index() const { return m_index; }
+
+ virtual void setup() = 0;
+ virtual void setup_matrices() = 0;
+
+protected:
+ renderer_bgfx *m_renderer;
+ uint32_t m_index;
+ bgfx_target *m_backbuffer;
+ std::vector<uint32_t> &m_seen_views;
+
+ uint32_t m_window_index;
+ uint32_t m_view_width;
+ uint32_t m_view_height;
+ float m_z_near;
+ float m_z_far;
+
+ uint32_t m_clear_color;
+ float m_clear_depth;
+ uint8_t m_clear_stencil;
+
+ bool m_do_clear_color;
+ bool m_do_clear_depth;
+ bool m_do_clear_stencil;
+};
+
+class bgfx_ortho_view : public bgfx_view {
+public:
+ bgfx_ortho_view(renderer_bgfx *renderer, uint32_t index, bgfx_target *backbuffer, std::vector<uint32_t> &seen_views) : bgfx_view(renderer, index, backbuffer, seen_views) { }
+
+ void setup() override;
+ void setup_matrices() override;
+};