Hello Window in OpenGL

This is a full code of Hello Window from the tutorial “Learn OpenGL” 1.

#include <iostream>

#include <glad/glad.h>
#include <GLFW/glfw3.h>

void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow *window);

int main() {
	// Intialize GLFW
	glfwInit();

	// Configure GLFW (v3.3)
	glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
	glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
	glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

	// Create a window object
	GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", NULL, NULL);
	if (window == NULL) {
		std::cout << "Failed to create GLFW window" << std::endl;
		glfwTerminate();
		return -1;
	}

	// Make our window the main context on the current thread
	glfwMakeContextCurrent(window);

	// Initialize GLAD
	if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
		std::cout << "Failed to initialize GLAD" << std::endl;
		return -1;
	}

	// Set size of the rendering window (dimensions)
	glViewport(0, 0, 800, 600);

	// Register a callback function on the window that gets called
	// each time the window is resized
	glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);

	// Render loop that keeps on running until we tell GLFW to stop
	while(!glfwWindowShouldClose(window)) {
		// Check input close window if it is the escape key
		processInput(window);

		// Rendering commands here
		// Set a color to clear the screen with (state-setting function)
		glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
		// Clear the screen with the color (state-using function)
		glClear(GL_COLOR_BUFFER_BIT);

		// Swap the color buffer and show output to the screen
		glfwSwapBuffers(window);

		// Check if any events are triggered
		glfwPollEvents();
	}

	// Clean/delete all GLFW's resources
	glfwTerminate();

	return 0;
}

void framebuffer_size_callback(GLFWwindow* window, int width, int height) {
	// Update width and height
	glViewport(0, 0, width, height);
}

void processInput(GLFWwindow *window) {
	// Check whether the user has pressed the escape key and close GLFW
	if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
		glfwSetWindowShouldClose(window, true);
}

The code is compiled using the following command.

$ g++ hello_window.cpp glad.c -o hello_window -lglfw -lGL -lm -lXrandr -lXi -lX11 -lXxf86vm -lpthread -ldl -lXinerama -lXcursor
$ ./hello_window

Comments