From 33c7968bc4297e7a937abc9fe16a507a2c2f6159 Mon Sep 17 00:00:00 2001 From: Aaron Gorodetzky Date: Fri, 22 May 2020 02:41:38 -0400 Subject: [PATCH] Create base game for future use --- CMakeLists.txt | 3 +++ base/CMakeLists.txt | 9 ++++++++ base/src/main.c | 55 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 base/CMakeLists.txt create mode 100644 base/src/main.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 3546294..2fa2c48 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,5 +16,8 @@ set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE) set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) add_subdirectory(lib/glfw) +# The basis for games +add_subdirectory(base) + # The Games add_subdirectory(pong) diff --git a/base/CMakeLists.txt b/base/CMakeLists.txt new file mode 100644 index 0000000..4bbe304 --- /dev/null +++ b/base/CMakeLists.txt @@ -0,0 +1,9 @@ +cmake_minimum_required(VERSION 3.00) + +set(BASE_SOURCE src/main.c) + +add_executable(base ${BASE_SOURCE}) + +target_link_libraries(base PRIVATE EmberLib) +target_link_libraries(base PRIVATE glad) +target_link_libraries(base PRIVATE glfw) diff --git a/base/src/main.c b/base/src/main.c new file mode 100644 index 0000000..13af2b4 --- /dev/null +++ b/base/src/main.c @@ -0,0 +1,55 @@ +#include +#include +#include + +void framebuffer_size_callback(GLFWwindow *window, int width, int height) +{ + glViewport(0, 0, width, height); +} + +void process_input(GLFWwindow *window) +{ + if(glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) + { + glfwSetWindowShouldClose(window, 1); + } +} + +int main() +{ + glfwInit(); + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); + glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); + glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); + + GLFWwindow *window = glfwCreateWindow(800, 600, "OpenGL Base Game", NULL, NULL); + if(window == NULL) + { + fprintf(stderr, "Failed to create GLFW Window!\n"); + glfwTerminate(); + return -1; + } + glfwMakeContextCurrent(window); + + if(!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) + { + fprintf(stderr, "Failed to initialize GLAD!\n"); + glfwTerminate(); + return -1; + } + + glViewport(0, 0, 800, 600); + glfwSetFramebufferSizeCallback(window, framebuffer_size_callback); + + while(!glfwWindowShouldClose(window)) + { + process_input(window); + + glfwSwapBuffers(window); + glfwPollEvents(); + } + + glfwTerminate(); + return 0; +}