Index: game-gui-glfw.cpp
===================================================================
--- game-gui-glfw.cpp	(revision 09e15a42fb5e39d51855bce8fdf5937f9837da1e)
+++ game-gui-glfw.cpp	(revision a6f68333e3e494e2e7baf6960f8d915391cd4acd)
@@ -56,4 +56,8 @@
    window = glfwCreateWindow(windowWidth, windowHeight, title.c_str(), mon, nullptr);
 
+   // TODO: I should check the window size after it's created to make sure it matches the requested size
+   // glfwGetFramebufferSize(window, width, height) segfaults on OSX, check other platforms
+   // I think glfwGetWindowSize(window, width, height) works fine.
+
    glfwSetMouseButtonCallback(window, glfw_mouse_button_callback);
    glfwSetKeyCallback(window, glfw_key_callback);
@@ -89,4 +93,18 @@
 }
 
+void GameGui_GLFW::refreshWindowSize() {
+   // glfwGetFramebufferSize(window, width, height) segfaults on OSX, check other platforms
+   // I think glfwGetWindowSize(window, width, height) works fine.
+   glfwGetWindowSize(window, &windowWidth, &windowHeight);
+}
+
+int GameGui_GLFW::getWindowWidth() {
+   return windowWidth;
+}
+
+int GameGui_GLFW::getWindowHeight() {
+   return windowHeight;
+}
+
 #ifdef GAMEGUI_INCLUDE_VULKAN
 
@@ -95,6 +113,4 @@
       RTWO_SUCCESS : RTWO_ERROR;
 }
-
-#endif
 
 vector<const char*> GameGui_GLFW::getRequiredExtensions() {
@@ -109,11 +125,5 @@
 }
 
-void GameGui_GLFW::getWindowSize(int* width, int* height) {
-   // This function segfaults on OSX, check other platforms
-   //glfwGetFramebufferSize(window, width, height);
-
-   *width = windowWidth;
-   *height = windowHeight;
-}
+#endif
 
 void glfw_error_callback(int error, const char* description) {
Index: game-gui-glfw.hpp
===================================================================
--- game-gui-glfw.hpp	(revision 09e15a42fb5e39d51855bce8fdf5937f9837da1e)
+++ game-gui-glfw.hpp	(revision a6f68333e3e494e2e7baf6960f8d915391cd4acd)
@@ -8,4 +8,6 @@
 #ifdef GAMEGUI_INCLUDE_VULKAN
    #define GLFW_INCLUDE_VULKAN
+#else
+   #include <GL/glew.h>
 #endif
 
@@ -30,14 +32,15 @@
       int pollEvent(UIEvent* event);
 
+      void refreshWindowSize();
+      int getWindowWidth();
+      int getWindowHeight();
+
 #ifdef GAMEGUI_INCLUDE_VULKAN
       bool createVulkanSurface(VkInstance instance, VkSurfaceKHR* surface);
+      vector<const char*> getRequiredExtensions();
 #endif
-
-      vector<const char*> getRequiredExtensions();
-      void getWindowSize(int* width, int* height);
 
    private:
       GLFWwindow* window;
-
       int windowWidth, windowHeight;
 };
Index: game-gui-sdl.cpp
===================================================================
--- game-gui-sdl.cpp	(revision 09e15a42fb5e39d51855bce8fdf5937f9837da1e)
+++ game-gui-sdl.cpp	(revision a6f68333e3e494e2e7baf6960f8d915391cd4acd)
@@ -61,4 +61,6 @@
                SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
                width, height, flags);
+
+   refreshWindowSize();
 
    return window;
@@ -125,4 +127,16 @@
 }
 
+void GameGui_SDL::refreshWindowSize() {
+   SDL_GetWindowSize(window, &windowWidth, &windowHeight);
+}
+
+int GameGui_SDL::getWindowWidth() {
+   return windowWidth;
+}
+
+int GameGui_SDL::getWindowHeight() {
+   return windowHeight;
+}
+
 #ifdef GAMEGUI_INCLUDE_VULKAN
 
@@ -131,6 +145,4 @@
       RTWO_SUCCESS : RTWO_ERROR;
 }
-
-#endif
 
 vector<const char*> GameGui_SDL::getRequiredExtensions() {
@@ -144,5 +156,3 @@
 }
 
-void GameGui_SDL::getWindowSize(int* width, int* height) {
-   SDL_GetWindowSize(window, width, height);
-}
+#endif
Index: game-gui-sdl.hpp
===================================================================
--- game-gui-sdl.hpp	(revision 09e15a42fb5e39d51855bce8fdf5937f9837da1e)
+++ game-gui-sdl.hpp	(revision a6f68333e3e494e2e7baf6960f8d915391cd4acd)
@@ -7,5 +7,8 @@
 #include <SDL2/SDL_image.h>
 #include <SDL2/SDL_ttf.h>
-#include <SDL2/SDL_vulkan.h>
+
+#ifdef GAMEGUI_INCLUDE_VULKAN
+   #include <SDL2/SDL_vulkan.h>
+#endif
 
 class GameGui_SDL : public GameGui {
@@ -22,13 +25,16 @@
       int pollEvent(UIEvent* event);
 
+      void refreshWindowSize();
+      int getWindowWidth();
+      int getWindowHeight();
+
 #ifdef GAMEGUI_INCLUDE_VULKAN
       bool createVulkanSurface(VkInstance instance, VkSurfaceKHR* surface);
+      vector<const char*> getRequiredExtensions();
 #endif
-
-      vector<const char*> getRequiredExtensions();
-      void getWindowSize(int* width, int* height);
 
    private:
       SDL_Window* window;
+      int windowWidth, windowHeight;
 
       static string s_errorMessage;
Index: game-gui.hpp
===================================================================
--- game-gui.hpp	(revision 09e15a42fb5e39d51855bce8fdf5937f9837da1e)
+++ game-gui.hpp	(revision a6f68333e3e494e2e7baf6960f8d915391cd4acd)
@@ -67,19 +67,12 @@
       virtual int pollEvent(UIEvent* event) = 0;
 
-      /*
-      virtual void processEvents() = 0;
-
-      virtual int pollMouseEvent(MouseEvent* event) = 0;
-
-      virtual unsigned char getKeyEvent(unsigned int key) = 0;
-      virtual bool isKeyPressed(unsigned int key) = 0;
-      */
+      virtual void refreshWindowSize() = 0;
+      virtual int getWindowWidth() = 0;
+      virtual int getWindowHeight() = 0;
 
 #ifdef GAMEGUI_INCLUDE_VULKAN
       virtual bool createVulkanSurface(VkInstance instance, VkSurfaceKHR* surface) = 0;
+      virtual vector<const char*> getRequiredExtensions() = 0;
 #endif
-
-      virtual vector<const char*> getRequiredExtensions() = 0;
-      virtual void getWindowSize(int* width, int* height) = 0;
 };
 
Index: opengl-game.cpp
===================================================================
--- opengl-game.cpp	(revision 09e15a42fb5e39d51855bce8fdf5937f9837da1e)
+++ opengl-game.cpp	(revision a6f68333e3e494e2e7baf6960f8d915391cd4acd)
@@ -66,9 +66,6 @@
    }
 
-   int actualWidth=0, actualHeight=0;
-   gui->getWindowSize(&actualWidth, &actualHeight);
-
    cout << "Target window size: (" << width << ", " << height << ")" << endl;
-   cout << "Actual window size: (" << actualWidth << ", " << actualHeight << ")" << endl;
+   cout << "Actual window size: (" << gui->getWindowWidth() << ", " << gui->getWindowHeight() << ")" << endl;
 
    return RTWO_SUCCESS;
Index: vulkan-game.cpp
===================================================================
--- vulkan-game.cpp	(revision 09e15a42fb5e39d51855bce8fdf5937f9837da1e)
+++ vulkan-game.cpp	(revision a6f68333e3e494e2e7baf6960f8d915391cd4acd)
@@ -78,9 +78,6 @@
    }
 
-   int actualWidth, actualHeight;
-   gui->getWindowSize(&actualWidth, &actualHeight);
-
    cout << "Target window size: (" << width << ", " << height << ")" << endl;
-   cout << "Actual window size: (" << actualWidth << ", " << actualHeight << ")" << endl;
+   cout << "Actual window size: (" << gui->getWindowWidth() << ", " << gui->getWindowHeight() << ")" << endl;
 
    return RTWO_SUCCESS;
