32#define GLFW_EXPOSE_NATIVE_WIN32
34#define GLFW_EXPOSE_NATIVE_X11
36#include <GLFW/glfw3.h>
37#include <GLFW/glfw3native.h>
39#define NV_FLOW_SWAPCHAIN_DESC 1
41#include "NvFlowLoader.h"
43#define GLFW_PTR(X) decltype(&X) p_##X = nullptr
45#define GLFW_PTR_LOAD(X) ptr->p_##X = (decltype(&X))GlfwLoader_loadFunction(ptr, #X)
49 void*
module = nullptr;
52 GLFW_PTR(glfwWindowHint);
53 GLFW_PTR(glfwCreateWindow);
54 GLFW_PTR(glfwGetPrimaryMonitor);
55 GLFW_PTR(glfwGetVideoMode);
56 GLFW_PTR(glfwSetWindowUserPointer);
57 GLFW_PTR(glfwSetWindowPos);
58 GLFW_PTR(glfwSetWindowSizeCallback);
59 GLFW_PTR(glfwSetKeyCallback);
60 GLFW_PTR(glfwSetCharCallback);
61 GLFW_PTR(glfwSetMouseButtonCallback);
62 GLFW_PTR(glfwSetCursorPosCallback);
63 GLFW_PTR(glfwSetScrollCallback);
65 GLFW_PTR(glfwGetWin32Window);
67 GLFW_PTR(glfwGetX11Display);
68 GLFW_PTR(glfwGetX11Window);
70 GLFW_PTR(glfwDestroyWindow);
71 GLFW_PTR(glfwTerminate);
72 GLFW_PTR(glfwPollEvents);
73 GLFW_PTR(glfwWindowShouldClose);
74 GLFW_PTR(glfwGetWindowUserPointer);
75 GLFW_PTR(glfwSetWindowMonitor);
76 GLFW_PTR(glfwGetMouseButton);
79inline void* GlfwLoader_loadFunction(
GlfwLoader* ptr,
const char* name)
81 return NvFlowGetProcAddress(ptr->module, name);
86#if defined(__aarch64__)
87 ptr->module = NvFlowLoadLibrary(
"glfw3.dll",
"libglfw_aarch64.so.3.3");
89 ptr->module = NvFlowLoadLibrary(
"glfw3.dll",
"libglfw.so.3");
92 GLFW_PTR_LOAD(glfwInit);
93 GLFW_PTR_LOAD(glfwWindowHint);
94 GLFW_PTR_LOAD(glfwCreateWindow);
95 GLFW_PTR_LOAD(glfwGetPrimaryMonitor);
96 GLFW_PTR_LOAD(glfwGetVideoMode);
97 GLFW_PTR_LOAD(glfwSetWindowUserPointer);
98 GLFW_PTR_LOAD(glfwSetWindowPos);
99 GLFW_PTR_LOAD(glfwSetWindowSizeCallback);
100 GLFW_PTR_LOAD(glfwSetKeyCallback);
101 GLFW_PTR_LOAD(glfwSetCharCallback);
102 GLFW_PTR_LOAD(glfwSetMouseButtonCallback);
103 GLFW_PTR_LOAD(glfwSetCursorPosCallback);
104 GLFW_PTR_LOAD(glfwSetScrollCallback);
106 GLFW_PTR_LOAD(glfwGetWin32Window);
108 GLFW_PTR_LOAD(glfwGetX11Display);
109 GLFW_PTR_LOAD(glfwGetX11Window);
111 GLFW_PTR_LOAD(glfwDestroyWindow);
112 GLFW_PTR_LOAD(glfwTerminate);
113 GLFW_PTR_LOAD(glfwPollEvents);
114 GLFW_PTR_LOAD(glfwWindowShouldClose);
115 GLFW_PTR_LOAD(glfwGetWindowUserPointer);
116 GLFW_PTR_LOAD(glfwSetWindowMonitor);
117 GLFW_PTR_LOAD(glfwGetMouseButton);
120inline void GlfwLoader_destroy(
GlfwLoader* ptr)
122 NvFlowFreeLibrary(ptr->module);