diff options
| author | Miguel <m.i@gmx.at> | 2021-04-28 23:39:13 +0200 |
|---|---|---|
| committer | Miguel <m.i@gmx.at> | 2021-04-28 23:39:13 +0200 |
| commit | 6dedf2c8289368bfd6969365113ba772fc7fb746 (patch) | |
| tree | cca5fd019dca13eba8ec9f5f166209741d679cfe | |
initial commit
| -rw-r--r-- | Makefile | 16 | ||||
| -rw-r--r-- | example.cpp | 86 |
2 files changed, 102 insertions, 0 deletions
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 <glad/glad.h> +#include <GLFW/glfw3.h> + +#include <iostream> + +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); +} |
