Guest User

My OpenGL program that doesn't work

a guest
Jun 19th, 2026
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.62 KB | None | 0 0
  1. #include <GLFW/glfw3.h>
  2. #include <cstdio>
  3.  
  4. void errorcallback(int error, const char *desc) {
  5.     fprintf(stderr, "ERROR %d: %s\n", error, desc);
  6.     fflush(stderr);
  7. }
  8. void keycallback(GLFWwindow *window, int key, int scancode, int action, int mods) {
  9.     if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) glfwSetWindowShouldClose(window, true);
  10. }
  11.  
  12. int main() {
  13.     glfwSetErrorCallback(errorcallback);
  14.     if (!glfwInit()) return 1;
  15.     glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
  16.     glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
  17.     glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, true);
  18.     glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
  19.     auto window = glfwCreateWindow(800, 600, "Portal2d w/ shader", 0, 0);
  20.     if (!window) return glfwTerminate(), 2;
  21.     glfwMakeContextCurrent(window);
  22.     glfwSetKeyCallback(window, keycallback);
  23.  
  24.     while (!glfwWindowShouldClose(window)) {
  25.         float ratio;
  26.         int width, height;
  27.         glfwGetFramebufferSize(window, &width, &height);
  28.         ratio = width / (float) height;
  29.         glViewport(0, 0, width, height);
  30.         glClearColor(0, .1, .2, 1);
  31.         glClear(GL_COLOR_BUFFER_BIT);
  32.  
  33.         glMatrixMode(GL_PROJECTION);
  34.         glLoadIdentity();
  35.         glOrtho(-ratio, ratio, -1.f, 1.f, 1.f, -1.f);
  36.  
  37.         glMatrixMode(GL_MODELVIEW);
  38.         glLoadIdentity();
  39.         glRotatef((float) glfwGetTime() * 50.f, 0.f, 0.f, 1.f);
  40.  
  41.         glBegin(GL_TRIANGLES);
  42.         glColor3f(1.f, 0.f, 0.f);
  43.         glVertex3f(-0.6f, -0.4f, 0.f);
  44.         glColor3f(0.f, 1.f, 0.f);
  45.         glVertex3f(0.6f, -0.4f, 0.f);
  46.         glColor3f(0.f, 0.f, 1.f);
  47.         glVertex3f(0.f, 0.6f, 0.f);
  48.         glEnd();
  49.  
  50.         glfwSwapBuffers(window);
  51.         glfwPollEvents();
  52.     }
  53.     glfwDestroyWindow(window);
  54.     glfwTerminate();
  55. }
Advertisement
Add Comment
Please, Sign In to add comment