From 3dae95023f02b2a670f7a5ad454d0d20c9a281b5 Mon Sep 17 00:00:00 2001 From: omigamedev Date: Sat, 16 Nov 2019 17:32:06 +0100 Subject: [PATCH] add renderdoc api --- PanoPainter.vcxproj | 4 ++-- src/app.cpp | 16 ++++++++++++++++ src/app.h | 3 +++ src/main.cpp | 33 ++++++++++++++++++++++++++++++++- 4 files changed, 53 insertions(+), 3 deletions(-) diff --git a/PanoPainter.vcxproj b/PanoPainter.vcxproj index 38659d7..cb31dca 100644 --- a/PanoPainter.vcxproj +++ b/PanoPainter.vcxproj @@ -77,7 +77,7 @@ true - libs\glm;libs\glew-2.0.0\include;libs\stb;libs\tinyxml2;libs\yoga;libs\curl-win\include;libs\jpeg;libs\wacom;libs\bugtrap-client\include;libs\poly2tri\poly2tri;libs\base64;libs\sqlite3;libs\openvr\headers;libs\nanort;libs\hash-library;libs\fmt\include;libs\glad\include;libs\openh264\include;libs\mp4v2\include;libs\libyuv\include;$(IncludePath) + libs\glm;libs\glew-2.0.0\include;libs\stb;libs\tinyxml2;libs\yoga;libs\curl-win\include;libs\jpeg;libs\wacom;libs\bugtrap-client\include;libs\poly2tri\poly2tri;libs\base64;libs\sqlite3;libs\openvr\headers;libs\nanort;libs\hash-library;libs\fmt\include;libs\glad\include;libs\openh264\include;libs\mp4v2\include;libs\libyuv\include;C:\Program Files\RenderDoc;$(IncludePath) libs\curl-win\lib\dll-$(Configuration)-$(PlatformShortName);libs\glew-2.0.0\lib\Release\$(Platform);libs\bugtrap-client\lib;libs\openvr\lib\win64;libs\openh264\lib;libs\mp4v2\lib\win;libs\libyuv\lib\win;$(LibraryPath) @@ -87,7 +87,7 @@ false - libs\glm;libs\glew-2.0.0\include;libs\stb;libs\tinyxml2;libs\yoga;libs\curl-win\include;libs\jpeg;libs\wacom;libs\bugtrap-client\include;libs\poly2tri\poly2tri;libs\base64;libs\sqlite3;libs\openvr\headers;libs\nanort;libs\hash-library;libs\fmt\include;libs\glad\include;libs\openh264\include;libs\mp4v2\include;libs\libyuv\include;$(IncludePath) + libs\glm;libs\glew-2.0.0\include;libs\stb;libs\tinyxml2;libs\yoga;libs\curl-win\include;libs\jpeg;libs\wacom;libs\bugtrap-client\include;libs\poly2tri\poly2tri;libs\base64;libs\sqlite3;libs\openvr\headers;libs\nanort;libs\hash-library;libs\fmt\include;libs\glad\include;libs\openh264\include;libs\mp4v2\include;libs\libyuv\include;C:\Program Files\RenderDoc;$(IncludePath) libs\curl-win\lib\dll-$(Configuration)-$(PlatformShortName);libs\glew-2.0.0\lib\Release\$(Platform);libs\bugtrap-client\lib;libs\openvr\lib\win64;libs\openh264\lib;libs\mp4v2\lib\win;libs\libyuv\lib\win;$(LibraryPath) diff --git a/src/app.cpp b/src/app.cpp index d854de4..4b71b0d 100644 --- a/src/app.cpp +++ b/src/app.cpp @@ -24,6 +24,8 @@ void async_lock(); void win32_async_swap(); void async_unlock(); void destroy_window(); +void win32_renderdoc_frame_start(); +void win32_renderdoc_frame_end(); #elif __LINUX__ std::string linux_home_path(); int mkpath(const std::string& dir, mode_t mode = DEFFILEMODE); @@ -726,6 +728,20 @@ std::string App::res_to_string(int res) return res_map_str[res_to_index(res)]; } +void App::renderdoc_frame_start() +{ +#if __WIN__ + win32_renderdoc_frame_start(); +#endif +} + +void App::renderdoc_frame_end() +{ +#if __WIN__ + win32_renderdoc_frame_end(); +#endif +} + void App::rec_clear() { rec_stop(); diff --git a/src/app.h b/src/app.h index a3905a9..3364259 100644 --- a/src/app.h +++ b/src/app.h @@ -226,6 +226,9 @@ public: void toggle_ui(); void set_stylus(); + void renderdoc_frame_start(); + void renderdoc_frame_end(); + void rec_clear(); void rec_loop(); void rec_start(); diff --git a/src/main.cpp b/src/main.cpp index 37f33ff..3540d4a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -12,12 +12,15 @@ #include #include -#include "wacom.h" #include #include + +#include "wacom.h" #include "abr.h" #include "settings.h" +#include + #include #include #include @@ -51,6 +54,31 @@ float timer_ink_touch = 0; float timer_ink_pen = 0; bool sandboxed = false; +RENDERDOC_API_1_4_0* rdoc_api = NULL; +bool win32_renderdoc_init() +{ + // At init, on windows + if (HMODULE mod = GetModuleHandleA("renderdoc.dll")) + { + pRENDERDOC_GetAPI RENDERDOC_GetAPI = + (pRENDERDOC_GetAPI)GetProcAddress(mod, "RENDERDOC_GetAPI"); + return RENDERDOC_GetAPI(eRENDERDOC_API_Version_1_1_2, (void**)&rdoc_api); + } + return false; +} + +void win32_renderdoc_frame_start() +{ + if (rdoc_api) + rdoc_api->StartFrameCapture(NULL, NULL); +} + +void win32_renderdoc_frame_end() +{ + if (rdoc_api) + rdoc_api->EndFrameCapture(NULL, NULL); +} + HRESULT(*GetDpiForMonitor_fn)(HMONITOR hmonitor, MONITOR_DPI_TYPE dpiType, UINT* dpiX, UINT* dpiY); HRESULT(*SetProcessDpiAwareness_fn)(PROCESS_DPI_AWARENESS value); void init_shcore_API() @@ -925,6 +953,9 @@ int main(int argc, char** argv) LOG("GL vendor: %s", glGetString(GL_VENDOR)); LOG("GL renderer: %s", glGetString(GL_RENDERER)); + if (!win32_renderdoc_init()) + LOG("Renderdoc not started"); + swprintf_s(window_title, L"PanoPainter %s (%s)", g_version_number_w, str2wstr((char*)glGetString(GL_RENDERER)).c_str());