summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiguel <m.i@gmx.at>2021-04-28 23:39:13 +0200
committerMiguel <m.i@gmx.at>2021-04-28 23:39:13 +0200
commit6dedf2c8289368bfd6969365113ba772fc7fb746 (patch)
treecca5fd019dca13eba8ec9f5f166209741d679cfe
initial commit
-rw-r--r--Makefile16
-rw-r--r--example.cpp86
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);
+}