From 5554777188225266e2295db3588f6cb17cae0c4d Mon Sep 17 00:00:00 2001 From: Yong He Date: Mon, 11 Jan 2021 09:11:52 -0800 Subject: Make `gfx::Renderer` a COM interface. (#1653) * Make `gfx::Renderer` a COM interface. This is a first step towards making the `gfx` library expose a COM compatible DLL interface. Remaining classes will come as separate PRs. * Fixup project files * Fix calling conventions * Make gfx::create*Renderer() functions increase ref count by 1 * Make renderer createFunc return via out parameter --- tools/graphics-app-framework/gui.cpp | 2 +- tools/graphics-app-framework/gui.h | 6 +++--- tools/graphics-app-framework/model.cpp | 2 +- tools/graphics-app-framework/model.h | 10 +++++----- 4 files changed, 10 insertions(+), 10 deletions(-) (limited to 'tools/graphics-app-framework') diff --git a/tools/graphics-app-framework/gui.cpp b/tools/graphics-app-framework/gui.cpp index 8208bd606..3d6039f27 100644 --- a/tools/graphics-app-framework/gui.cpp +++ b/tools/graphics-app-framework/gui.cpp @@ -36,7 +36,7 @@ void setNativeWindowHook(Window* window, WNDPROC proc); #endif -GUI::GUI(Window* window, Renderer* inRenderer) +GUI::GUI(Window* window, IRenderer* inRenderer) : renderer(inRenderer) { ImGui::CreateContext(); diff --git a/tools/graphics-app-framework/gui.h b/tools/graphics-app-framework/gui.h index d2c52de3c..fa6fda1d1 100644 --- a/tools/graphics-app-framework/gui.h +++ b/tools/graphics-app-framework/gui.h @@ -4,21 +4,21 @@ #include "tools/gfx/render.h" #include "vector-math.h" #include "window.h" - +#include "slang-com-ptr.h" #include "external/imgui/imgui.h" namespace gfx { struct GUI : RefObject { - GUI(Window* window, Renderer* renderer); + GUI(Window* window, IRenderer* renderer); ~GUI(); void beginFrame(); void endFrame(); private: - RefPtr renderer; + Slang::ComPtr renderer; RefPtr pipelineState; RefPtr descriptorSetLayout; RefPtr pipelineLayout; diff --git a/tools/graphics-app-framework/model.cpp b/tools/graphics-app-framework/model.cpp index 5d3a850e4..6a61c64e5 100644 --- a/tools/graphics-app-framework/model.cpp +++ b/tools/graphics-app-framework/model.cpp @@ -98,7 +98,7 @@ namespace gfx { RefPtr loadTextureImage( - Renderer* renderer, + IRenderer* renderer, char const* path) { int extentX = 0; diff --git a/tools/graphics-app-framework/model.h b/tools/graphics-app-framework/model.h index e86940244..446f57943 100644 --- a/tools/graphics-app-framework/model.h +++ b/tools/graphics-app-framework/model.h @@ -3,7 +3,7 @@ #include "tools/gfx/render.h" #include "vector-math.h" - +#include "slang-com-ptr.h" #include #include @@ -65,10 +65,10 @@ struct ModelLoader FlipWinding = 1 << 0, }; - ICallbacks* callbacks = nullptr; - RefPtr renderer; - LoadFlags loadFlags = 0; - float scale = 1.0f; + ICallbacks* callbacks = nullptr; + Slang::ComPtr renderer; + LoadFlags loadFlags = 0; + float scale = 1.0f; Result load(char const* inputPath, void** outModel); }; -- cgit v1.2.3