2 #include <GLFW/glfw3.h>
6 #include "opengl/opengl.h"
8 extern GLFWwindow *win;
12 static void clear(float r, float g, float b);
13 static void viewport(int x, int y, int width, int height);
14 static void zbuffer(bool enable);
15 static void cull_face(Gfx_cull_face cf);
16 static void reshape(int width, int height) {};
21 fprintf(stderr, "Failed to initialize GLFW.\n");
25 glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
26 glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 5);
27 glfwWindowHint(GLFW_SRGB_CAPABLE, GLFW_TRUE);
29 if(!(win = glfwCreateWindow(win_w, win_h, "glcow", 0, 0))) {
30 fprintf(stderr, "Failed to create window.\n");
33 glfwMakeContextCurrent(win);
37 glEnable(GL_DEPTH_TEST);
38 glEnable(GL_CULL_FACE);
39 glEnable(GL_FRAMEBUFFER_SRGB); // linear colorspace
42 gfx_viewport = viewport;
43 gfx_zbuffer = zbuffer;
44 gfx_cull_face = cull_face;
45 gfx_reshape = reshape;
47 // glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
54 glfwDestroyWindow(win);
59 static void clear(float r, float g, float b)
61 glClearColor(r, g, b, 1.0);
62 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
65 static void viewport(int x, int y, int width, int height)
67 glViewport(x, y, width, height);
70 static void zbuffer(bool enable)
73 glEnable(GL_DEPTH_TEST);
75 glDisable(GL_DEPTH_TEST);
78 static void cull_face(Gfx_cull_face cf)
82 glDisable(GL_CULL_FACE);
85 glEnable(GL_CULL_FACE);
89 glEnable(GL_CULL_FACE);