Last active
February 13, 2025 17:41
-
-
Save victusfate/9214902 to your computer and use it in GitHub Desktop.
glfw opengl sample program
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <GLFW/glfw3.h> | |
#include <stdlib.h> | |
#include <stdio.h> | |
#include <iostream> | |
using namespace std; | |
static void error_callback(int error, const char* description) | |
{ | |
fputs(description, stderr); | |
} | |
static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) | |
{ | |
if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) | |
glfwSetWindowShouldClose(window, GL_TRUE); | |
} | |
int main(void) | |
{ | |
GLFWwindow* window; | |
glfwSetErrorCallback(error_callback); | |
if (!glfwInit()) | |
exit(EXIT_FAILURE); | |
// cout << "default shader lang: " << glGetString(GL_SHADING_LANGUAGE_VERSION) << endl; | |
// select opengl version | |
// int major, minor, rev; | |
// glfwGetVersion(&major, &minor, &rev); | |
// cout << "glfw major.minor " << major << "." << minor << "." << rev << endl; | |
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); | |
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2); | |
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); | |
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); | |
window = glfwCreateWindow(640, 480, "Simple example", NULL, NULL); | |
if (!window) | |
{ | |
glfwTerminate(); | |
exit(EXIT_FAILURE); | |
} | |
glfwMakeContextCurrent(window); | |
cout << "OpenGL shader language version: " << glGetString(GL_SHADING_LANGUAGE_VERSION) << endl; | |
glfwSetKeyCallback(window, key_callback); | |
while (!glfwWindowShouldClose(window)) | |
{ | |
float ratio; | |
int width, height; | |
glfwGetFramebufferSize(window, &width, &height); | |
ratio = width / (float) height; | |
glViewport(0, 0, width, height); | |
glClear(GL_COLOR_BUFFER_BIT); | |
glMatrixMode(GL_PROJECTION); | |
glLoadIdentity(); | |
glOrtho(-ratio, ratio, -1.f, 1.f, 1.f, -1.f); | |
glMatrixMode(GL_MODELVIEW); | |
glLoadIdentity(); | |
glRotatef((float) glfwGetTime() * 50.f, 0.f, 0.f, 1.f); | |
glBegin(GL_TRIANGLES); | |
glColor3f(1.f, 0.f, 0.f); | |
glVertex3f(-0.6f, -0.4f, 0.f); | |
glColor3f(0.f, 1.f, 0.f); | |
glVertex3f(0.6f, -0.4f, 0.f); | |
glColor3f(0.f, 0.f, 1.f); | |
glVertex3f(0.f, 0.6f, 0.f); | |
glEnd(); | |
glfwSwapBuffers(window); | |
glfwPollEvents(); | |
} | |
glfwDestroyWindow(window); | |
glfwTerminate(); | |
exit(EXIT_SUCCESS); | |
} |
just a heads up @harryhanYuhao this is from 2014 so the current interfaces may have changed/been updated
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks for sharing!