Index: game-gui-sdl.cpp
===================================================================
--- game-gui-sdl.cpp	(revision f898c5ffd3d3b37cf9e8d865eb1e9d553e06b4e7)
+++ game-gui-sdl.cpp	(revision 826df16ad0027a920254943793adf36c48239d7f)
@@ -1,5 +1,5 @@
 #include "game-gui-sdl.hpp"
 
-#include <SDL.h>
+#include <SDL2/SDL.h>
 
 #include <iostream>
Index: makefile
===================================================================
--- makefile	(revision f898c5ffd3d3b37cf9e8d865eb1e9d553e06b4e7)
+++ makefile	(revision 826df16ad0027a920254943793adf36c48239d7f)
@@ -34,11 +34,19 @@
 	$(CC) $^ $(DEP) $(CFLAGS) -o $@
 
+# from the mac makefile
+#CXX_INCLUDES = -I/Users/dportnoy15/Development/vulkan-sdk-macos-1.1.108.0/macOS/include -I/usr/local/Cellar/sdl2/2.0.9_1/include/SDL2
+#LIBFLAGS =  -Wl,-rpath,$(VULKAN_SDK_PATH)/macOS/lib $(VULKAN_SDK_PATH)/macOS/lib/libvulkan.dylib -L/usr/local/Cellar/sdl2/2.0.9_1/lib -lSDL2
+
+CXX_FLAGS = -std=c++17 -Wall -pedantic # -O3
+
 VULKAN_SDK_PATH = /home/dportnoy/Desktop/VulkanSDK/1.1.106.0/x86_64
-CFLAGS_VULKAN = -std=c++17 -I$(VULKAN_SDK_PATH)/include -Wall -pedantic
-#LIBFLAGS = -L$(VULKAN_SDK_PATH)/lib `pkg-config --static --libs glfw3` -lvulkan
-LIBFLAGS = -L$(VULKAN_SDK_PATH)/lib -lvulkan -lSDL2
 
-vulkangame: new-vulkan-game.cpp
-	$(CC) $(CFLAGS_VULKAN) -o $@ $^ $(LIBFLAGS)
+LIB_PATHS = -L$(VULKAN_SDK_PATH)/lib -I$(VULKAN_SDK_PATH)/include
+LIBS = -lvulkan -lSDL2
+
+LIB_FLAGS = $(LIB_PATHS) $(LIBS)
+
+vulkangame: vulkan-game.cpp game-gui-sdl.cpp
+	$(CC) $(CXX_FLAGS) -o $@ $^ $(LIB_FLAGS)
 
 clean:
Index: w-vulkan-game.cpp
===================================================================
--- new-vulkan-game.cpp	(revision f898c5ffd3d3b37cf9e8d865eb1e9d553e06b4e7)
+++ 	(revision )
@@ -1,72 +1,0 @@
-#include <SDL2/SDL.h>
-#include <SDL2/SDL_vulkan.h>
-
-#define _USE_MATH_DEFINES // Will be needed when/if I need to # include <cmath>
-
-#define GLM_FORCE_RADIANS
-#define GLM_FORCE_DEPTH_ZERO_TO_ONE
-#include <glm/vec4.hpp>
-#include <glm/mat4x4.hpp>
-
-#include <iostream>
-#include <vector>
-
-using namespace std;
-using namespace glm;
-
-const int SCREEN_WIDTH = 800;
-const int SCREEN_HEIGHT = 600;
-
-int main(int argc, char* argv[]) {
-   cout << "Starting Vulkan SDL game..." << endl;
-
-   SDL_Window* window = nullptr;
-   //SDL_Surface* screenSurface = nullptr;
-
-   if (SDL_Init(SDL_INIT_VIDEO) < 0) {
-      cout << "SDL could not initialize! SDL_Error: " << SDL_GetError() << endl;
-   } else {
-      window = SDL_CreateWindow("Vulkan Game",
-                  SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
-                  SCREEN_WIDTH, SCREEN_HEIGHT,
-		  SDL_WINDOW_VULKAN);
-
-      if (window == nullptr) {
-         cout << "Window could not be created! SDL_Error: " << SDL_GetError() << endl;
-      } else {
-         //screenSurface = SDL_GetWindowSurface(window);
-
-         //SDL_FillRect(screenSurface, nullptr, SDL_MapRGB(screenSurface->format, 0xFF, 0xFF, 0xFF));
-            
-         SDL_UpdateWindowSurface(window);
-
-	 uint32_t extensionCount;
-   
-	 //vkEnumerateInstanceExtensionProperties(nullptr, &extensionCount, nullptr);
-
-	 //cout << "Vulkan extensions (" << extensionCount << "):" << endl;
-         //cout << endl;
-
-         SDL_Vulkan_GetInstanceExtensions(window, &extensionCount, nullptr);
-
-         vector<const char*> extensionNames(extensionCount);
-         SDL_Vulkan_GetInstanceExtensions(window, &extensionCount, extensionNames.data());
-
-	 cout << "SDL Vulkan extensions (" << extensionCount << "):" << endl;
-
-	 for (vector<const char*>::iterator it = extensionNames.begin(); it != extensionNames.end(); it++) {
-            cout << *it << endl;
-         }
-
-         SDL_Delay(2000);
-      }
-   }
-
-   SDL_DestroyWindow( window );
-
-   SDL_Quit();
-
-   cout << "Finished" << endl;
-
-   exit(0);
-}
Index: vulkan-game.cpp
===================================================================
--- vulkan-game.cpp	(revision f898c5ffd3d3b37cf9e8d865eb1e9d553e06b4e7)
+++ vulkan-game.cpp	(revision 826df16ad0027a920254943793adf36c48239d7f)
@@ -1,6 +1,8 @@
-#define GLFW_INCLUDE_VULKAN
-#include <GLFW/glfw3.h>
-
-#define _USE_MATH_DEFINES // Will be needed when/if I need to # include <cmath>
+#include <vulkan/vulkan.h>
+
+#include <SDL2/SDL.h>
+#include <SDL2/SDL_vulkan.h>
+
+//#define _USE_MATH_DEFINES // Will be needed when/if I need to # include <cmath>
 
 #define GLM_FORCE_RADIANS
@@ -10,11 +12,157 @@
 
 #include <iostream>
+#include <vector>
+#include <stdexcept>
+#include <cstdlib>
+
+#include "game-gui-sdl.hpp"
 
 using namespace std;
 using namespace glm;
 
-int main(int argc, char* argv[]) {
-   cout << "Starting Vulkan game..." << endl;
-
+const int SCREEN_WIDTH = 800;
+const int SCREEN_HEIGHT = 600;
+
+const vector<const char*> validationLayers = {
+    "VK_LAYER_KHRONOS_validation"
+};
+
+#ifdef NDEBUG
+   const bool enableValidationLayers = false;
+#else
+   const bool enableValidationLayers = true;
+#endif
+
+class VulkanGame {
+   public:
+      void run() {
+         if (initWindow() == RTWO_ERROR) {
+            return;
+         }
+         initVulkan();
+         createInstance();
+         mainLoop();
+         cleanup();
+      }
+   private:
+      GameGui_SDL gui;
+      SDL_Window* window = NULL;
+
+      VkInstance instance;
+
+      // both SDL and GLFW create window functions return NULL on failure
+      bool initWindow() {
+         if (gui.Init() == RTWO_ERROR) {
+            cout << "UI library could not be initialized!" << endl;
+            return RTWO_ERROR;
+         } else {
+            // On Apple's OS X you must set the NSHighResolutionCapable Info.plist property to YES,
+            // otherwise you will not receive a High DPI OpenGL canvas.
+
+            // TODO: Move this into some generic method in game-gui-sdl
+            window = SDL_CreateWindow("Vulkan Game",
+               SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
+               SCREEN_WIDTH, SCREEN_HEIGHT,
+               SDL_WINDOW_VULKAN | SDL_WINDOW_SHOWN);
+
+            if (window == NULL) {
+               cout << "Window could not be created!" << endl;
+               return RTWO_ERROR;
+            } else {
+               return RTWO_SUCCESS;
+            }
+         }
+      }
+
+      void initVulkan() {
+         createInstance();
+      }
+
+      void createInstance() {
+         VkApplicationInfo appInfo = {};
+         appInfo.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
+         appInfo.pApplicationName = "Vulkan Game";
+         appInfo.applicationVersion = VK_MAKE_VERSION(1, 0, 0);
+         appInfo.pEngineName = "No Engine";
+         appInfo.engineVersion = VK_MAKE_VERSION(1, 0, 0);
+         appInfo.apiVersion = VK_API_VERSION_1_0;
+
+         VkInstanceCreateInfo createInfo = {};
+         createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
+         createInfo.pApplicationInfo = &appInfo;
+
+         uint32_t extensionCount;
+         SDL_Vulkan_GetInstanceExtensions(window, &extensionCount, nullptr);
+
+         vector<const char*> extensionNames(extensionCount);
+         SDL_Vulkan_GetInstanceExtensions(window, &extensionCount, extensionNames.data());
+
+         createInfo.enabledExtensionCount = extensionCount;
+         createInfo.ppEnabledExtensionNames = extensionNames.data();
+         createInfo.enabledLayerCount = 0;
+
+         if (vkCreateInstance(&createInfo, nullptr, &instance) != VK_SUCCESS) {
+            throw runtime_error("failed to create instance!");
+         }
+      }
+
+      void mainLoop() {
+         // TODO: Create some generic event-handling functions in game-gui-*
+         SDL_Event e;
+         bool quit = false;
+
+         /*
+         SDL_Surface* screenSurface = nullptr;
+         VkSurfaceKHR surface;
+
+         if (!SDL_Vulkan_CreateSurface(window, instance, &surface)) {
+            cout << "Couild not create Vulkan surface" << endl;
+         }
+
+         screenSurface = SDL_GetWindowSurface(window);
+         cout << "Got here" << endl;
+         cout << (screenSurface == nullptr ? "true" : "false") << endl;
+
+         SDL_FillRect(screenSurface, nullptr, SDL_MapRGB(screenSurface->format, 0xFF, 0xFF, 0xFF));
+         cout << "Filled" << endl;
+
+         SDL_UpdateWindowSurface(window);
+         cout << "Updated" << endl;
+         */
+
+         while(!quit) {
+            while (SDL_PollEvent(&e)) {
+               if (e.type == SDL_QUIT) {
+                  quit = true;
+               }
+               if (e.type == SDL_KEYDOWN) {
+                  quit = true;
+               }
+               if (e.type == SDL_MOUSEBUTTONDOWN) {
+                  quit = true;
+               }
+            }
+         }
+      }
+
+      void cleanup() {
+         vkDestroyInstance(instance, nullptr);
+
+         // TODO: Move this into some generic method in game-gui-sdl
+         SDL_DestroyWindow(window);
+
+         gui.Shutdown();
+      }
+};
+
+int main() {
+
+#ifdef NDEBUG
+   cout << "DEBUGGING IS OFF" << endl;
+#else
+   cout << "DEBUGGING IS ON" << endl;
+#endif
+
+   /*
    glfwInit();
 
@@ -26,19 +174,35 @@
 
    cout << extensionCount << " extensions supported" << endl;
-
+   */
+
+   /*
+   while(!glfwWindowShouldClose(window)) {
+      glfwPollEvents();
+   }
+
+   glfwDestroyWindow(window);
+
+   glfwTerminate();
+   */
+
+   /*
    mat4 matrix;
    vec4 vec;
    vec4 test = matrix * vec;
-
-   while (!glfwWindowShouldClose(window)) {
-      glfwPollEvents();
+   */
+
+   cout << "Starting Vulkan game..." << endl;
+
+   VulkanGame game;
+
+   try {
+      game.run();
+   } catch (const exception& e) {
+      cerr << e.what() << endl;
+      return EXIT_FAILURE;
    }
 
-   glfwDestroyWindow(window);
-
-   glfwTerminate();
-
-   cout << "Finished" << endl;
-
-   exit(0);
+   cout << "Finished running the game" << endl;
+
+   return EXIT_SUCCESS;
 }
Index: lkan-makefile
===================================================================
--- vulkan-makefile	(revision f898c5ffd3d3b37cf9e8d865eb1e9d553e06b4e7)
+++ 	(revision )
@@ -1,17 +1,0 @@
-VULKAN_SDK_PATH = /Users/dportnoy15/Development/vulkan-sdk-macos-1.1.108.0
-CC = g++
-
-# Add -DNDEBUG in prod builds to turn off debugging
-CXX_FLAGS = -O3 -std=c++11
-
-CXX_INCLUDES = -I/Users/dportnoy15/Development/vulkan-sdk-macos-1.1.108.0/macOS/include -I/usr/local/Cellar/sdl2/2.0.9_1/include/SDL2
-
-# -Wl,-rpath is required to link vulkan dynamically
-# Check if I can do it statically, like in Linux
-LIBFLAGS =  -Wl,-rpath,$(VULKAN_SDK_PATH)/macOS/lib $(VULKAN_SDK_PATH)/macOS/lib/libvulkan.dylib -L/usr/local/Cellar/sdl2/2.0.9_1/lib -lSDL2
-
-vulkan-hello-world: main.cpp game-gui-sdl.cpp
-	$(CC) $(CXX_FLAGS) $^ -o $@ $(CXX_INCLUDES) $(LIBFLAGS)
-
-clean:
-	rm -f vulkan-hello-world
Index: lkan-tutorial.cpp
===================================================================
--- vulkan-tutorial.cpp	(revision f898c5ffd3d3b37cf9e8d865eb1e9d553e06b4e7)
+++ 	(revision )
@@ -1,203 +1,0 @@
-#include <vulkan/vulkan.h>
-
-#include <SDL.h>
-#include <SDL_vulkan.h>
-
-#define GLM_FORCE_RADIANS
-#define GLM_FORCE_DEPTH_ZERO_TO_ONE
-#include <glm/vec4.hpp>
-#include <glm/mat4x4.hpp>
-
-#include <iostream>
-#include <vector>
-#include <stdexcept>
-//#include <functional>
-#include <cstdlib>
-
-#include "game-gui-sdl.hpp"
-
-using namespace std;
-using namespace glm;
-
-const int SCREEN_WIDTH = 800;
-const int SCREEN_HEIGHT = 600;
-
-const vector<const char*> validationLayers = {
-    "VK_LAYER_KHRONOS_validation"
-};
-
-#ifdef NDEBUG
-   const bool enableValidationLayers = false;
-#else
-   const bool enableValidationLayers = true;
-#endif
-
-class VulkanGame {
-   public:
-      void run() {
-         if (initWindow() == RTWO_ERROR) {
-            return;
-         }
-         initVulkan();
-         createInstance();
-         mainLoop();
-         cleanup();
-      }
-   private:
-      GameGui_SDL gui;
-      SDL_Window* window = NULL;
-
-      VkInstance instance;
-
-      // both SDL and GLFW create window functions return NULL on failure
-      bool initWindow() {
-         if (gui.Init() == RTWO_ERROR) {
-            cout << "UI library could not be initialized!" << endl;
-            return RTWO_ERROR;
-         } else {
-            // On Apple's OS X you must set the NSHighResolutionCapable Info.plist property to YES,
-            // otherwise you will not receive a High DPI OpenGL canvas.
-
-            // TODO: Move this into some generic method in game-gui-sdl
-            window = SDL_CreateWindow("Vulkan Game",
-               SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
-               SCREEN_WIDTH, SCREEN_HEIGHT,
-               SDL_WINDOW_VULKAN | SDL_WINDOW_SHOWN);
-
-            if (window == NULL) {
-               cout << "Window could not be created!" << endl;
-               return RTWO_ERROR;
-            } else {
-               return RTWO_SUCCESS;
-            }
-         }
-      }
-
-      void initVulkan() {
-         createInstance();
-      }
-
-      void createInstance() {
-         VkApplicationInfo appInfo = {};
-         appInfo.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
-         appInfo.pApplicationName = "Vulkan Game";
-         appInfo.applicationVersion = VK_MAKE_VERSION(1, 0, 0);
-         appInfo.pEngineName = "No Engine";
-         appInfo.engineVersion = VK_MAKE_VERSION(1, 0, 0);
-         appInfo.apiVersion = VK_API_VERSION_1_0;
-
-         VkInstanceCreateInfo createInfo = {};
-         createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
-         createInfo.pApplicationInfo = &appInfo;
-
-         uint32_t extensionCount;
-         SDL_Vulkan_GetInstanceExtensions(window, &extensionCount, nullptr);
-
-         vector<const char*> extensionNames(extensionCount);
-         SDL_Vulkan_GetInstanceExtensions(window, &extensionCount, extensionNames.data());
-
-         createInfo.enabledExtensionCount = extensionCount;
-         createInfo.ppEnabledExtensionNames = extensionNames.data();
-         createInfo.enabledLayerCount = 0;
-
-         if (vkCreateInstance(&createInfo, nullptr, &instance) != VK_SUCCESS) {
-            throw runtime_error("failed to create instance!");
-         }
-      }
-
-      void mainLoop() {
-         // TODO: Create some generic event-handling functions in game-gui-*
-         SDL_Event e;
-         bool quit = false;
-
-         while(!quit) {
-            while (SDL_PollEvent(&e)) {
-               if (e.type == SDL_QUIT) {
-                  quit = true;
-               }
-               if (e.type == SDL_KEYDOWN) {
-                  quit = true;
-               }
-               if (e.type == SDL_MOUSEBUTTONDOWN) {
-                  quit = true;
-               }
-            }
-         }
-      }
-
-      void cleanup() {
-         vkDestroyInstance(instance, nullptr);
-
-         // TODO: Move this into some generic method in game-gui-sdl
-         SDL_DestroyWindow(window);
-
-         gui.Shutdown();
-      }
-};
-
-int main() {
-
-#ifdef NDEBUG
-   cout << "DEBUGGING IS OFF" << endl;
-#else
-   cout << "DEBUGGING IS ON" << endl;
-#endif
-
-   /*
-   glfwInit();
-
-   glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);
-   GLFWwindow* window = glfwCreateWindow(800, 600, "Vulkan window", nullptr, nullptr);
-
-   uint32_t extensionCount = 0;
-   vkEnumerateInstanceExtensionProperties(nullptr, &extensionCount, nullptr);
-
-   cout << extensionCount << " extensions supported" << endl;
-   */
-
-   /*
-   while(!glfwWindowShouldClose(window)) {
-      glfwPollEvents();
-   }
-
-   glfwDestroyWindow(window);
-
-   glfwTerminate();
-   */
-
-   /*
-   mat4 matrix;
-   vec4 vec;
-   vec4 test = matrix * vec;
-   */
-
-   cout << "Starting Vulkan game..." << endl;
-
-   VulkanGame game;
-
-   try {
-      game.run();
-   } catch (const exception& e) {
-      cerr << e.what() << endl;
-      return EXIT_FAILURE;
-   }
-
-   /* Some code used to create a surface and draw on it using SDL 
-      (Check that this works with a Vulkan window)
-
-   VkSurfaceKHR surface;
-   if (!SDL_Vulkan_CreateSurface(window, instance, &surface)) {
-      cout << "Couild not create Vulkan surface" << endl;
-   }
-
-   screenSurface = SDL_GetWindowSurface(window);
-
-   SDL_FillRect(screenSurface, NULL, SDL_MapRGB(screenSurface->format, 0xFF, 0xFF, 0xFF));
-      
-   SDL_UpdateWindowSurface(window);
-   */
-
-   cout << "Finished running the game" << endl;
-
-   return EXIT_SUCCESS;
-}
