Index: .gitignore
===================================================================
--- .gitignore	(revision 972aca1403a12af0c04a95276205621d2da32238)
+++ .gitignore	(revision 754cf5ae9f99e40c3cad832adc57aa8b04624c54)
@@ -1,2 +1,3 @@
+vulkangame
 newgame
 pong
Index: CrashLogger.cpp
===================================================================
--- CrashLogger.cpp	(revision 972aca1403a12af0c04a95276205621d2da32238)
+++ CrashLogger.cpp	(revision 754cf5ae9f99e40c3cad832adc57aa8b04624c54)
@@ -5,5 +5,4 @@
 #include <csignal>
 #include <cstring>
-#include <cstdint> // Check if this lets me remove any windows includes
 
 #include <fcntl.h>
@@ -15,4 +14,8 @@
 
 #ifdef WINDOWS
+   // Check if this is necessary or lets me remove any windows includes
+   // also check if it's needed in Linux
+   #include <cstdint>
+
    #include <windows.h>
    #include <io.h>
@@ -33,7 +36,9 @@
    #include <unistd.h>
    #include <execinfo.h>
-   #include <errno.h>
    #include <cxxabi.h>
-   #include <cstring>
+
+   // CHeck if these are needed in Linux
+   //#include <errno.h>
+   //#include <cstring>
 
    void abortHandler(int signum);
Index: README.txt
===================================================================
--- README.txt	(revision 972aca1403a12af0c04a95276205621d2da32238)
+++ README.txt	(revision 754cf5ae9f99e40c3cad832adc57aa8b04624c54)
@@ -8,7 +8,7 @@
 (Old Linux instructions for compiling game.cpp)
 -sudo apt-get install cmake xorg-dev  libglew-dev libglu1-mesa-dev freeglut3-dev mesa-common-dev
--
---Compile GLFW3 from source
-- (cmake . && make && sudo make install)
+
+-Compile GLFW3 from source
+ (cmake . && make && sudo make install)
 
 Installation Instructions for OSX
@@ -44,2 +44,15 @@
 
 Open and run NewOpenGLGame.sln in Visual Studio 2017 and run it.
+
+
+Vulkan Instructions
+--------------------
+
+Linux:
+
+Download the Vulkan SDK from ...
+
+-Compile GLFW3 from source
+ (cmake . && make && sudo make install)
+
+-sudo apt-get install libxcb1-dev xorg-dev libsdl2-dev libglm-dev
Index: makefile
===================================================================
--- makefile	(revision 972aca1403a12af0c04a95276205621d2da32238)
+++ makefile	(revision 754cf5ae9f99e40c3cad832adc57aa8b04624c54)
@@ -1,5 +1,6 @@
+# CFLAGS are compiler flags and LIBFLAGS could be renamed LINKER_FLAGS
 OS = $(shell uname)
 CC = g++
-CFLAGS = -std=c++0x -Wall -pedantic -rdynamic
+CFLAGS = -std=c++11 -Wall -pedantic -rdynamic
 # -rdynamic is to generate debug info for dynamic symbols on debian-based 
 # systems (tested on Linux Mint)
@@ -33,4 +34,12 @@
 	$(CC) $^ $(DEP) $(CFLAGS) -o $@
 
+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)
+
 clean:
 	rm -f newgame
@@ -38,2 +47,3 @@
 	rm -f mygame
 	rm -f demo
+	rm -f vulkangame
Index: new-vulkan-game.cpp
===================================================================
--- new-vulkan-game.cpp	(revision 754cf5ae9f99e40c3cad832adc57aa8b04624c54)
+++ new-vulkan-game.cpp	(revision 754cf5ae9f99e40c3cad832adc57aa8b04624c54)
@@ -0,0 +1,72 @@
+#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 754cf5ae9f99e40c3cad832adc57aa8b04624c54)
+++ vulkan-game.cpp	(revision 754cf5ae9f99e40c3cad832adc57aa8b04624c54)
@@ -0,0 +1,44 @@
+#define GLFW_INCLUDE_VULKAN
+#include <GLFW/glfw3.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>
+
+using namespace std;
+using namespace glm;
+
+int main(int argc, char* argv[]) {
+   cout << "Starting Vulkan game..." << endl;
+
+   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;
+
+   mat4 matrix;
+   vec4 vec;
+   vec4 test = matrix * vec;
+
+   while (!glfwWindowShouldClose(window)) {
+      glfwPollEvents();
+   }
+
+   glfwDestroyWindow(window);
+
+   glfwTerminate();
+
+   cout << "Finished" << endl;
+
+   exit(0);
+}
