En aquesta secció, aprendrem a configurar l'entorn de desenvolupament necessari per començar a treballar amb OpenGL. Aquest procés inclou la instal·lació de les eines i llibreries necessàries, així com la configuració del teu IDE (Entorn de Desenvolupament Integrat) preferit.

  1. Requisits Previs

Abans de començar, assegura't de tenir instal·lats els següents elements al teu sistema:

  • Un compilador C/C++: OpenGL es programa principalment en C o C++. Pots utilitzar GCC (GNU Compiler Collection) per a Linux, MinGW per a Windows o Xcode per a macOS.
  • Un IDE: Recomanem Visual Studio Code, CLion, Code::Blocks o qualsevol altre IDE amb suport per a C/C++.
  • Llibreries necessàries: GLAD, GLFW i GLEW són les llibreries més comunes per treballar amb OpenGL.

  1. Instal·lació de les Llibreries

2.1. Instal·lar GLAD

GLAD és un carregador de funcions d'OpenGL. Ens ajuda a gestionar les extensions d'OpenGL de manera fàcil.

  1. Visita el Generador de GLAD.
  2. Selecciona les següents opcions:
    • Language: C/C++
    • Specification: OpenGL
    • API: OpenGL (selecciona la versió que necessitis, per exemple, 4.6)
    • Profile: Core
    • Generate a loader: Sí
  3. Fes clic a "Generate" i descarrega el fitxer ZIP.
  4. Extreu el contingut del fitxer ZIP a una carpeta del teu projecte.

2.2. Instal·lar GLFW

GLFW és una llibreria per a la creació de finestres, contextos OpenGL i la gestió d'inputs.

Windows

  1. Descarrega l'última versió de GLFW des del lloc web oficial.
  2. Extreu el contingut del fitxer ZIP a una carpeta del teu projecte.
  3. Afegeix la ruta de les llibreries i els fitxers d'encapçalament al teu projecte.

Linux

sudo apt-get update
sudo apt-get install libglfw3-dev

macOS

brew install glfw

2.3. Instal·lar GLEW (opcional)

GLEW és una llibreria per a la gestió de les extensions d'OpenGL. Si utilitzes GLAD, no necessites GLEW, però és bo conèixer-la.

Windows

  1. Descarrega l'última versió de GLEW des del lloc web oficial.
  2. Extreu el contingut del fitxer ZIP a una carpeta del teu projecte.
  3. Afegeix la ruta de les llibreries i els fitxers d'encapçalament al teu projecte.

Linux

sudo apt-get update
sudo apt-get install libglew-dev

macOS

brew install glew

  1. Configuració del Projecte

3.1. Crear un Projecte Nou

Crea un nou projecte en el teu IDE preferit. Assegura't que el projecte estigui configurat per a C/C++.

3.2. Incloure les Llibreries

Afegeix les rutes dels fitxers d'encapçalament i les llibreries al teu projecte. Això pot variar segons l'IDE que utilitzis. Aquí tens un exemple per a Visual Studio Code:

Visual Studio Code

  1. Crea un fitxer tasks.json a la carpeta .vscode del teu projecte amb el següent contingut:
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "g++",
            "args": [
                "-g",
                "${workspaceFolder}/src/*.cpp",
                "-o",
                "${workspaceFolder}/bin/main",
                "-I${workspaceFolder}/include",
                "-L${workspaceFolder}/lib",
                "-lglfw",
                "-lGL",
                "-ldl"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": ["$gcc"]
        }
    ]
}
  1. Crea un fitxer launch.json a la carpeta .vscode del teu projecte amb el següent contingut:
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "GCC",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/bin/main",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "build",
            "miDebuggerPath": "/usr/bin/gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "logging": {
                "engineLogging": true
            }
        }
    ]
}

3.3. Escriure el Primer Programa

Crea un fitxer main.cpp a la carpeta src del teu projecte amb el següent contingut:

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

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

int main() {
    // Inicialitzar GLFW
    if (!glfwInit()) {
        std::cerr << "Error inicialitzant GLFW" << std::endl;
        return -1;
    }

    // Configurar GLFW
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

    // Crear una finestra GLFW
    GLFWwindow* window = glfwCreateWindow(800, 600, "Hello OpenGL", NULL, NULL);
    if (window == NULL) {
        std::cerr << "Error creant la finestra GLFW" << std::endl;
        glfwTerminate();
        return -1;
    }
    glfwMakeContextCurrent(window);

    // Registrar la funció de callback per al redimensionament de la finestra
    glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);

    // Bucle de renderització
    while (!glfwWindowShouldClose(window)) {
        // Processar l'input
        processInput(window);

        // Renderitzar
        glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
        glClear(GL_COLOR_BUFFER_BIT);

        // Intercanviar els buffers
        glfwSwapBuffers(window);
        glfwPollEvents();
    }

    // Alliberar els recursos
    glfwTerminate();
    return 0;
}

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

void processInput(GLFWwindow *window) {
    if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
        glfwSetWindowShouldClose(window, true);
}

  1. Compilar i Executar

Compila i executa el teu projecte. Si tot està configurat correctament, hauries de veure una finestra amb un fons de color verdós.

Conclusió

Ara tens el teu entorn de desenvolupament configurat per treballar amb OpenGL. En la següent secció, aprendrem a crear el nostre primer programa OpenGL. Assegura't de tenir tot configurat correctament abans de continuar.

© Copyright 2024. Tots els drets reservats