Skip to content

PES_2_2

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

Definiciones de constantes y variables globales:

  • #define numVAOs 1: Define el número de Vertex Array Objects (VAOs) que se van a utilizar en el programa. En este caso, se utiliza solo uno.

  • GLuint renderingProgram; Variable global para almacenar el ID del programa de sombreado que se utilizará para renderizar.

  • GLuint vao[numVAOs]; Array para almacenar los IDs de los VAOs. En este caso, el array tiene un solo elemento, correspondiente al número de VAOs definidos.

Función para crear un programa de sombreado:

  • GLuint glCreateShaderProgram() { ... } Esta función crea un programa de sombreado (shader program) en OpenGL.

  • const char *vshaderSource = "..."; Contiene el código fuente del sombreado de vértices. En este caso, el sombreado simplemente asigna una posición fija a todos los vértices.

  • const char *fshaderSource = "..."; Contiene el código fuente del sombreado de fragmentos. Aquí, el sombreado asigna un color azul a todos los fragmentos.

  • GLuint vShader = glCreateShader(GL_VERTEX_SHADER); Crea un objeto de sombreado para el sombreado de vértices.

  • GLuint fShader = glCreateShader(GL_FRAGMENT_SHADER); Crea un objeto de sombreado para el sombreado de fragmentos.

  • glShaderSource(vShader, 1, &vshaderSource, NULL); Adjunta el código fuente del sombreado de vértices al objeto de sombreado.

  • glShaderSource(fShader, 1, &fshaderSource, NULL); Adjunta el código fuente del sombreado de fragmentos al objeto de sombreado.

  • glCompileShader(vShader); Compila el sombreado de vértices.

  • glCompileShader(fShader); Compila el sombreado de fragmentos.

  • GLint vfProgram = glCreateProgram(); Crea un programa de sombreado.

  • glAttachShader(vfProgram, vShader); Adjunta el sombreado de vértices al programa de sombreado.

  • glAttachShader(vfProgram, fShader); Adjunta el sombreado de fragmentos al programa de sombreado.

  • glLinkProgram(vfProgram); Enlaza el programa de sombreado, combinando los sombreadores en un solo programa ejecutable.

  • return vfProgram; Devuelve el ID del programa de sombreado creado.

Función de inicialización:

void init(GLFWwindow *window) { ... } Esta función se encarga de la inicialización del programa.

  • renderingProgram = glCreateShaderProgram(); Llama a la función glCreateShaderProgram para crear un programa de sombreado y almacena el ID en la variable renderingProgram.

  • glGenVertexArrays(numVAOs, vao); Genera los VAOs especificados por numVAOs y almacena sus IDs en el array vao.

  • glBindVertexArray(vao[0]); Asocia el primer VAO del array a la máquina de estados de OpenGL.

Función para dibujar la escena:

void displaw(GLFWwindow* window, double currentTime) { ... } Esta función se encarga de renderizar la escena.

  • glUseProgram(renderingProgram); Activa el programa de sombreado para la renderización.

  • glPointSize(50.0f); Establece el tamaño del punto que se dibujará.

  • glDrawArrays(GL_POINTS, 0, 1); Dibuja un punto usando los datos del VAO actual.

Habilitar V-Sync:

glfwSwapInterval(1); Habilita la sincronización vertical (V-Sync), que limita la tasa de actualización de la ventana a la frecuencia de refresco del monitor. Esto ayuda a evitar el desgarro de pantalla.

Bucle principal:

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

  • displaw(window, glfwGetTime()); Llama a la función displaw para renderizar la escena.

  • glfwSwapBuffers(window); Intercambia los buffers de la ventana, mostrando el contenido actualizado.

programa_2_2

program_2_6

Clone this wiki locally