Moving graphics context creation around to hide actual creation.

Makes it easier to support APIs that don't have a concept of sharing.
This commit is contained in:
Ben Vanik
2015-11-10 17:38:57 -08:00
parent d8fa54ffc4
commit 6c95ca1cdb
16 changed files with 234 additions and 97 deletions

View File

@@ -15,6 +15,7 @@
namespace xe {
namespace ui {
class GraphicsProvider;
class ImmediateDrawer;
class Window;
@@ -22,9 +23,9 @@ class GraphicsContext {
public:
virtual ~GraphicsContext();
GraphicsProvider* provider() const { return provider_; }
Window* target_window() const { return target_window_; }
virtual std::unique_ptr<GraphicsContext> CreateShared() = 0;
bool is_offscreen() { return immediate_drawer() == nullptr; }
virtual ImmediateDrawer* immediate_drawer() = 0;
@@ -36,8 +37,9 @@ class GraphicsContext {
virtual void EndSwap() = 0;
protected:
explicit GraphicsContext(Window* target_window);
explicit GraphicsContext(GraphicsProvider* provider, Window* target_window);
GraphicsProvider* provider_ = nullptr;
Window* target_window_ = nullptr;
};