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);
20 fprintf(stderr, "Failed to initialize GLFW.\n");
24 glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
25 glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 5);
26 glfwWindowHint(GLFW_SRGB_CAPABLE, GLFW_TRUE);
28 if(!(win = glfwCreateWindow(win_w, win_h, "glcow", 0, 0))) {
29 fprintf(stderr, "Failed to create window.\n");
32 glfwMakeContextCurrent(win);
36 glEnable(GL_DEPTH_TEST);
37 glEnable(GL_CULL_FACE);
38 glEnable(GL_FRAMEBUFFER_SRGB); // linear colorspace
41 gfx_viewport = viewport;
42 gfx_zbuffer = zbuffer;
43 gfx_cull_face = cull_face;
45 // glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
52 glfwDestroyWindow(win);
57 static void clear(float r, float g, float b)
59 glClearColor(r, g, b, 1.0);
60 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
63 static void viewport(int x, int y, int width, int height)
65 glViewport(x, y, width, height);
68 static void zbuffer(bool enable)
71 glEnable(GL_DEPTH_TEST);
73 glDisable(GL_DEPTH_TEST);
76 static void cull_face(Gfx_cull_face cf)
80 glDisable(GL_CULL_FACE);
83 glEnable(GL_CULL_FACE);
87 glEnable(GL_CULL_FACE);