diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/main.cpp | 15 | ||||
| -rw-r--r-- | src/vk-renderer.cpp | 4 | ||||
| -rw-r--r-- | src/vulkan-loader.cpp | 3 | ||||
| -rw-r--r-- | src/window.cpp | 6 |
5 files changed, 25 insertions, 5 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 43a9858..77614b2 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,3 +1,5 @@ +add_definitions(-DNOMINMAX -D_USE_MATH_DEFINES) + include_directories(${CMAKE_SOURCE_DIR}/include) include_directories(${Vulkan_INCLUDE_DIRS}) diff --git a/src/main.cpp b/src/main.cpp index 5bd2f6e..5b321ff 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4,8 +4,6 @@ #include <cstring> #include <cstdio> #include <cassert> -#include <unistd.h> -#include <dlfcn.h> #include "rt.hpp" #include "vk-renderer.hpp" @@ -70,6 +68,16 @@ void random_scene(sphere *world) { int main() { RENDERDOC_API_1_1_2 *rdoc_api = NULL; +#ifdef WINDOWS + // At init, on windows + if(HMODULE mod = GetModuleHandleA("renderdoc.dll")) + { + pRENDERDOC_GetAPI RENDERDOC_GetAPI = + (pRENDERDOC_GetAPI)GetProcAddress(mod, "RENDERDOC_GetAPI"); + int ret = RENDERDOC_GetAPI(eRENDERDOC_API_Version_1_1_2, (void **)&rdoc_api); + assert(ret == 1); + } +#elif LINUX // At init, on linux/android. // For android replace librenderdoc.so with libVkLayer_GLES_RenderDoc.so if(void *mod = dlopen("librenderdoc.so", RTLD_NOW | RTLD_NOLOAD)) @@ -78,6 +86,7 @@ int main() { int ret = RENDERDOC_GetAPI(eRENDERDOC_API_Version_1_1_2, (void **)&rdoc_api); assert(ret == 1); } +#endif // Image dimensions // const float aspect_ratio = 16.0 / 9.0; @@ -150,8 +159,6 @@ int main() { // stop the capture if(rdoc_api) rdoc_api->EndFrameCapture(NULL, NULL); - pause(); - //------------------------- // GPU path tracer //------------------------- diff --git a/src/vk-renderer.cpp b/src/vk-renderer.cpp index a34b83d..ea7a9cb 100644 --- a/src/vk-renderer.cpp +++ b/src/vk-renderer.cpp @@ -150,7 +150,9 @@ void vkrenderer::create_instance() { std::vector<const char*> extensions = { VK_EXT_DEBUG_UTILS_EXTENSION_NAME, "VK_KHR_surface", +#ifdef LINUX "VK_KHR_xcb_surface" +#endif }; VkInstanceCreateInfo instance_create_info = {}; @@ -192,6 +194,7 @@ void vkrenderer::create_debugger() { } void vkrenderer::create_surface(window& wnd) { +#ifdef LINUX VkXcbSurfaceCreateInfoKHR create_info = {}; create_info.sType = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR; create_info.pNext = nullptr; @@ -200,6 +203,7 @@ void vkrenderer::create_surface(window& wnd) { create_info.window = wnd.win; VKRESULT(vkCreateXcbSurfaceKHR(instance, &create_info, nullptr, &platform_surface)) +#endif } void vkrenderer::create_device() { diff --git a/src/vulkan-loader.cpp b/src/vulkan-loader.cpp index 17ddb31..4590cff 100644 --- a/src/vulkan-loader.cpp +++ b/src/vulkan-loader.cpp @@ -1,13 +1,14 @@ #include "vulkan-loader.hpp" #include <iostream> +#include "rt.hpp" #if defined(WINDOWS) HMODULE vulkanLibrary = LoadLibrary("vulkan-1.dll"); #define LoadProcAddress GetProcAddress -#elif defined(__linux__) +#elif defined(LINUX) #include <dlfcn.h> void *vulkanLibrary = dlopen( "libvulkan.so.1", RTLD_NOW ); diff --git a/src/window.cpp b/src/window.cpp index 1bfc903..d901e66 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -1,5 +1,6 @@ #include "window.hpp" +#ifdef LINUX window::window(uint32_t width, uint32_t height) :width(width), height(height) { connection = xcb_connect(NULL, NULL); @@ -27,3 +28,8 @@ window::window(uint32_t width, uint32_t height) xcb_map_window(connection, win); xcb_flush(connection); } +#elif defined(WINDOWS) +window::window(uint32_t width, uint32_t height) + :width(width), height(height) { +} +#endif |
