Skip to content

PES_2_1

Francisco Zavala edited this page Jul 25, 2024 · 4 revisions

Bibliotecas necesarias.

#include <glad/glad.h> 
#include <GLFW/glfw3.h> 
  • #include <glad/glad.h>: Esta biblioteca se utiliza para manejar la carga de funciones de OpenGL. Es útil porque OpenGL no proporciona un mecanismo estándar para cargar extensiones de OpenGL.

  • #include <GLFW/glfw3.h>: Esta biblioteca se utiliza para manejar ventanas y la entrada del usuario. GLFW facilita la creación de ventanas y el manejo de eventos de entrada (como teclado y ratón).

Función de inicialización (actualmente vacía):

  • void init(GLFWwindow* window) {}: Esta función está diseñada para realizar cualquier inicialización que sea necesaria para tu programa. Actualmente, está vacía, lo que significa que no se está realizando ninguna acción de inicialización específica.

Función para actualizar la pantalla:

void display(GLFWwindow* window) {}: Esta función se encarga de actualizar el contenido de la ventana.

  • glClear(GL_COLOR_BUFFER_BIT);: Limpia el buffer de color para preparar la ventana para el nuevo dibujo.
  • glClearColor(1.0f, 2.0f, 0.0f, 1.0f);: Establece el color de fondo de la ventana. En este caso, el color se establece en un tono amarillo-verde (valores RGBA).

Inicializar GLFW, termina el programa si falla:

if (!glfwInit()) { exit(EXIT_FAILURE); }: Inicializa la biblioteca GLFW. Si la inicialización falla, el programa termina con un código de salida de error.

Establecer propiedades de la ventana:

  • glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);: Especifica que se desea utilizar la versión 4.x de OpenGL.
  • glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);: Especifica que se desea utilizar la versión 4.3 de OpenGL.
  • glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);: Indica que se debe utilizar el perfil principal (core profile) de OpenGL, eliminando las funciones obsoletas.
  • glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);: Indica que se debe utilizar un contexto compatible hacia adelante, eliminando las funciones obsoletas en futuras versiones de OpenGL.

Crear la ventana:

GLFWwindow* window = glfwCreateWindow(1080, 720, "program_2_1", NULL, NULL);: Crea una ventana con dimensiones 1080x720 píxeles y el título "program_2_1".

Propiedades del monitor (comentado):

Este bloque de código, aunque comentado, muestra cómo obtener y utilizar las propiedades del monitor primario para crear una ventana a pantalla completa.

const GLFWvidmode* mode = glfwGetVideoMode(glfwGetPrimaryMonitor());
GLFWwindow* window = glfwCreateWindow(mode->width, mode->height, "program_2_1", nullptr, nullptr);
std::cout << "width " << mode->width << std::endl;
std::cout << "height " << mode->height << std::endl;
std::cout << "refresh " << mode->refreshRate << std::endl;
std::cout << "blueBits " << mode->blueBits << std::endl;
std::cout << "redBits " << mode->redBits << std::endl;
std::cout << "greenBits " << mode->greenBits << std::endl;

Comprobar si la ventana fue creada correctamente:

if (!window) { glfwTerminate(); return -1; }: Verifica si la ventana se creó correctamente. Si no es así, termina el programa y libera los recursos de GLFW.

Establecer el contexto de OpenGL para la ventana:

glfwMakeContextCurrent(window);: Establece el contexto de OpenGL actual para la ventana creada, lo que significa que todas las llamadas a funciones de OpenGL afectarán a esta ventana.

Inicializar GLAD para cargar funciones de OpenGL:

if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) { std::cout << "failed to initialize GLAD" << std::endl; return -1; }: Inicializa GLAD para cargar las funciones de OpenGL. Si la inicialización falla, imprime un mensaje de error y termina el programa.

Bucle principal:

while (!glfwWindowShouldClose(window)) {}: Bucle que se ejecuta hasta que se cierre la ventana.

  • display(window);: Llama a la función display para actualizar la ventana.
  • glfwPollEvents();: Procesa todos los eventos pendientes de la ventana (como entrada del teclado y ratón).
  • glfwSwapBuffers(window);: Intercambia los buffers de la ventana, mostrando el contenido recién dibujado.

Terminar GLFW cuando el programa finaliza:

glfwTerminate();: Libera los recursos utilizados por GLFW al finalizar el programa.

programa_2_1

program_2_6

Clone this wiki locally