summaryrefslogtreecommitdiff
path: root/ext/glfw/examples/windows.c
diff options
context:
space:
mode:
authorLorenzo Torres <lorenzotorres@outlook.it>2025-03-12 19:56:19 +0100
committerLorenzo Torres <lorenzotorres@outlook.it>2025-03-12 19:56:19 +0100
commit4f45899a3c28440724ffcaa3a604ad48f18a25c8 (patch)
treececd79da4e3e3cb17ffd86ec1a58d6e77a44cb83 /ext/glfw/examples/windows.c
parentfc39b277155044366f1647b238a415fab4028d83 (diff)
base code
Diffstat (limited to 'ext/glfw/examples/windows.c')
-rw-r--r--ext/glfw/examples/windows.c106
1 files changed, 106 insertions, 0 deletions
diff --git a/ext/glfw/examples/windows.c b/ext/glfw/examples/windows.c
new file mode 100644
index 0000000..1589ffb
--- /dev/null
+++ b/ext/glfw/examples/windows.c
@@ -0,0 +1,106 @@
+//========================================================================
+// Simple multi-window example
+// Copyright (c) Camilla Löwy <elmindreda@glfw.org>
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+// claim that you wrote the original software. If you use this software
+// in a product, an acknowledgment in the product documentation would
+// be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such, and must not
+// be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source
+// distribution.
+//
+//========================================================================
+
+#define GLAD_GL_IMPLEMENTATION
+#include <glad/gl.h>
+#define GLFW_INCLUDE_NONE
+#include <GLFW/glfw3.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char** argv)
+{
+ int xpos, ypos, height;
+ const char* description;
+ GLFWwindow* windows[4];
+
+ if (!glfwInit())
+ {
+ glfwGetError(&description);
+ printf("Error: %s\n", description);
+ exit(EXIT_FAILURE);
+ }
+
+ glfwWindowHint(GLFW_DECORATED, GLFW_FALSE);
+
+ glfwGetMonitorWorkarea(glfwGetPrimaryMonitor(), &xpos, &ypos, NULL, &height);
+
+ for (int i = 0; i < 4; i++)
+ {
+ const int size = height / 5;
+ const struct
+ {
+ float r, g, b;
+ } colors[] =
+ {
+ { 0.95f, 0.32f, 0.11f },
+ { 0.50f, 0.80f, 0.16f },
+ { 0.f, 0.68f, 0.94f },
+ { 0.98f, 0.74f, 0.04f }
+ };
+
+ if (i > 0)
+ glfwWindowHint(GLFW_FOCUS_ON_SHOW, GLFW_FALSE);
+
+ glfwWindowHint(GLFW_POSITION_X, xpos + size * (1 + (i & 1)));
+ glfwWindowHint(GLFW_POSITION_Y, ypos + size * (1 + (i >> 1)));
+
+ windows[i] = glfwCreateWindow(size, size, "Multi-Window Example", NULL, NULL);
+ if (!windows[i])
+ {
+ glfwGetError(&description);
+ printf("Error: %s\n", description);
+ glfwTerminate();
+ exit(EXIT_FAILURE);
+ }
+
+ glfwSetInputMode(windows[i], GLFW_STICKY_KEYS, GLFW_TRUE);
+
+ glfwMakeContextCurrent(windows[i]);
+ gladLoadGL(glfwGetProcAddress);
+ glClearColor(colors[i].r, colors[i].g, colors[i].b, 1.f);
+ }
+
+ for (;;)
+ {
+ for (int i = 0; i < 4; i++)
+ {
+ glfwMakeContextCurrent(windows[i]);
+ glClear(GL_COLOR_BUFFER_BIT);
+ glfwSwapBuffers(windows[i]);
+
+ if (glfwWindowShouldClose(windows[i]) ||
+ glfwGetKey(windows[i], GLFW_KEY_ESCAPE))
+ {
+ glfwTerminate();
+ exit(EXIT_SUCCESS);
+ }
+ }
+
+ glfwWaitEvents();
+ }
+}
+