diff options
| author | ladevieq <ladevie.quentin@gmail.com> | 2021-01-13 22:20:01 +0100 |
|---|---|---|
| committer | ladevieq <ladevie.quentin@gmail.com> | 2021-01-13 22:20:01 +0100 |
| commit | 4c7e4ae43566d08f1d7d91bffff4646ce287a68a (patch) | |
| tree | da9576fc4978f3ce7da1a97c7986dc5103061f9e | |
| parent | 0b68d510069ec524daa3e10e598587c62ab713ff (diff) | |
Compile on windows
| -rw-r--r-- | include/rt.hpp | 11 | ||||
| -rw-r--r-- | include/utils.hpp | 5 | ||||
| -rw-r--r-- | include/vk-renderer.hpp | 5 | ||||
| -rw-r--r-- | include/vulkan-loader.hpp | 4 | ||||
| -rw-r--r-- | include/window.hpp | 23 | ||||
| -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 |
10 files changed, 63 insertions, 15 deletions
diff --git a/include/rt.hpp b/include/rt.hpp index 222fe3a..c7fa9a0 100644 --- a/include/rt.hpp +++ b/include/rt.hpp @@ -1,6 +1,15 @@ #ifndef __RT_HPP_ #define __RT_HPP_ +#if defined(__linux__) +#define LINUX +#include <unistd.h> +#include <dlfcn.h> +#elif defined(_WIN32) || defined(_WIN64) +#define WINDOWS +#include <Windows.h> +#endif + #include "utils.hpp" #include "vec3.hpp" #include "color.hpp" @@ -8,8 +17,6 @@ #include "camera.hpp" #include "material.hpp" -#ifdef __linux__ #include "window.hpp" -#endif #endif // !__RT_HPP_ diff --git a/include/utils.hpp b/include/utils.hpp index 0bef213..42a5a1a 100644 --- a/include/utils.hpp +++ b/include/utils.hpp @@ -5,13 +5,14 @@ #include <vector> -#include <cmath> #include <cstdlib> std::vector<uint8_t> get_shader_code(const char* path); +#define PI 3.14159265359 + inline float deg_to_rad(float deg) { - return deg * M_PI / 180.0; + return deg * PI / 180.0; } inline float randd() { diff --git a/include/vk-renderer.hpp b/include/vk-renderer.hpp index d987d6f..aecda0f 100644 --- a/include/vk-renderer.hpp +++ b/include/vk-renderer.hpp @@ -6,10 +6,7 @@ #include "vulkan-loader.hpp" #include "thirdparty/vk_mem_alloc.h" -#include "vec3.hpp" -#include "camera.hpp" -#include "sphere.hpp" -#include "window.hpp" +#include "rt.hpp" struct input_data { color sky_color; diff --git a/include/vulkan-loader.hpp b/include/vulkan-loader.hpp index 0243c9f..cafd5bc 100644 --- a/include/vulkan-loader.hpp +++ b/include/vulkan-loader.hpp @@ -1,12 +1,12 @@ #ifndef __VULKAN_LOADER_HPP_ #define __VULKAN_LOADER_HPP_ -#if defined(_WIN32) || defined(_WIN64) +#if defined(WINDOWS) #include <Windows.h> #include <windowsx.h> #define VK_USE_PLATFORM_WIN32_KHR -#elif defined(__linux__) +#elif defined(LINUX) #define VK_USE_PLATFORM_XCB_KHR #endif diff --git a/include/window.hpp b/include/window.hpp index 8ddb58d..4b3d37b 100644 --- a/include/window.hpp +++ b/include/window.hpp @@ -1,6 +1,18 @@ #ifndef __WINDOW_HPP_ #define __WINDOW_HPP_ +#include <cstdint> + +#if defined(__linux__) +#define LINUX +#include <unistd.h> +#include <dlfcn.h> +#elif defined(_WIN32) || defined(_WIN64) +#define WINDOWS +#include <Windows.h> +#endif + +#if defined(LINUX) #include <xcb/xcb.h> class window { @@ -13,5 +25,16 @@ class window { uint32_t width; uint32_t height; }; +#elif defined(WINDOWS) +#include <Windows.h> + +class window { + public: + window(uint32_t width, uint32_t height); + + uint32_t width; + uint32_t height; +}; +#endif #endif // !__WINDOW_HPP_ 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 |
