From 6dedf2c8289368bfd6969365113ba772fc7fb746 Mon Sep 17 00:00:00 2001 From: Miguel Date: Wed, 28 Apr 2021 23:39:13 +0200 Subject: initial commit --- Makefile | 16 ++++++++++++ example.cpp | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 Makefile create mode 100644 example.cpp diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..55391b4 --- /dev/null +++ b/Makefile @@ -0,0 +1,16 @@ +run: a.exe glfw3.dll + ./a.exe + +glad.c: + cp /cygdrive/c/PROG/glad/src/glad.c . + +glfw3.dll: + cp /cygdrive/c/PROG/glfw-3.3.4.bin.WIN64/lib-static-ucrt/glfw3.dll . + +a.exe: example.cpp glad.c + g++ -I /cygdrive/C/PROG/glad/include/ -I /cygdrive/C/PROG/glfw-3.3.4.bin.WIN64/include/ -L /cygdrive/C/PROG/glfw-3.3.4.bin.WIN64/lib-static-ucrt/ -lglfw3 example.cpp glad.c + +clean: + rm glfw3.dll + rm glad.c + rm a.exe diff --git a/example.cpp b/example.cpp new file mode 100644 index 0000000..97cf5b2 --- /dev/null +++ b/example.cpp @@ -0,0 +1,86 @@ +#include +#include + +#include + +void framebuffer_size_callback(GLFWwindow* window, int width, int height); +void processInput(GLFWwindow *window); + +// settings +const unsigned int SCR_WIDTH = 800; +const unsigned int SCR_HEIGHT = 600; + +int main() +{ + // glfw: initialize and configure + // ------------------------------ + glfwInit(); + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); + glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); + +#ifdef __APPLE__ + glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); +#endif + + // glfw window creation + // -------------------- + GLFWwindow* window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "LearnOpenGL", NULL, NULL); + if (window == NULL) + { + std::cout << "Failed to create GLFW window" << std::endl; + glfwTerminate(); + return -1; + } + glfwMakeContextCurrent(window); + glfwSetFramebufferSizeCallback(window, framebuffer_size_callback); + + // glad: load all OpenGL function pointers + // --------------------------------------- + if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) + { + std::cout << "Failed to initialize GLAD" << std::endl; + return -1; + } + + // render loop + // ----------- + while (!glfwWindowShouldClose(window)) + { + // input + // ----- + processInput(window); + + // render + // ------ + glClearColor(0.2f, 0.3f, 0.3f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT); + + // glfw: swap buffers and poll IO events (keys pressed/released, mouse moved etc.) + // ------------------------------------------------------------------------------- + glfwSwapBuffers(window); + glfwPollEvents(); + } + + // glfw: terminate, clearing all previously allocated GLFW resources. + // ------------------------------------------------------------------ + glfwTerminate(); + return 0; +} + +// process all input: query GLFW whether relevant keys are pressed/released this frame and react accordingly +// --------------------------------------------------------------------------------------------------------- +void processInput(GLFWwindow *window) +{ + if(glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) + glfwSetWindowShouldClose(window, true); +} + +// glfw: whenever the window size changed (by OS or user resize) this callback function executes +// --------------------------------------------------------------------------------------------- +void framebuffer_size_callback(GLFWwindow* window, int width, int height) +{ + // make sure the viewport matches the new window dimensions; note that width and + // height will be significantly larger than specified on retina displays. + glViewport(0, 0, width, height); +} -- cgit v1.2.3