es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

WSL Ubuntu mostrando “Error: No se puede abrir la pantalla” incluso después de configurar manualmente la variable de entorno de pantalla.

Estoy usando g++ en WSL Ubuntu. Cloné el repositorio de GLFW usando git, utilicé el comando ccmake para configurar y generar los archivos binarios, luego utilicé make dentro del directorio “build” para finalmente crear el archivo .a. Instalé todas las bibliotecas relacionadas con OpenGL en /usr/ld (no recuerdo exactamente cuáles instalé, ya que tuve que instalar varias. De todos modos, el comando g++ funciona, así que supongo que fue exitoso). Después, creé un proyecto en VS Code que se ve así:

Imagen del proyecto

La carpeta de inclusión de GLFW proviene del repositorio clonado mencionado anteriormente, y las carpetas de inclusión de GLAD y KHR son de glad.dav1d.de, donde configuré la versión de GL (bajo API) a 3.3 y el Perfil a Core.

En main.cpp, coloqué un código simple destinado a inicializar GLFW:

#include <iostream>
#include <glad glad.h="">
#include <glfw glfw3.h="">

int main()
{
    // Inicializar GLFW
    if (!glfwInit()) {
        std::cerr << "Fallo al inicializar GLFW" << std::endl;
        return 1;
    }
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

    std::cout << "Éxito" << std::endl;

    return 0;
}

Luego utilicé este comando para compilar el proyecto: g++ -Wall -I./include/ -L./lib/ src/*.{c,cpp} -lglfw3 -lGL -lX11 -lpthread -lXrandr -lXi -ldl -o main. No hubo advertencias ni errores ni nada. Después de ejecutar el ejecutable, obtengo el mensaje de error de que GLFW no pudo inicializarse. Estaba un poco confundido por qué sucedió esto, así que escribí el comando glxinfo para descubrir que mi variable de entorno DISPLAY no ha sido configurada.

No tengo absolutamente idea de qué es esta variable o qué representa. Después de buscar en internet, encontré export DISPLAY=:0.0 y export DISPLAY=1 y export DISPLAY=IP:0.0, ninguno de los cuales funcionó. ¿Algún consejo sobre cómo podría resolver esto?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    La variable de entorno DISPLAY representa el servidor de visualización en el que se está ejecutando el programa. Es utilizada por el servidor X para determinar a qué visualización enviar gráficos. En su caso, dado que está utilizando WSL Ubuntu, necesita tener un servidor X en funcionamiento en su máquina con Windows para mostrar aplicaciones gráficas.

    Puede intentar instalar un servidor X como VcXsrv o Xming en su máquina con Windows y establecer la variable de entorno DISPLAY en la dirección IP de su máquina con Windows seguida de :0.0 (por ejemplo, export DISPLAY=192.168.0.10:0.0) en su terminal de WSL Ubuntu.

    Si eso no funciona, puede intentar ejecutar su ejecutable con la opción -X, que le indica que utilice conexiones TCP para el reenvío de X11:

    ssh -X usuario@direccionIP

    ./main

    Asegúrese de reemplazar “usuario” y “direccionIP” con su propia información.

    Si aún tiene problemas, puede intentar pedir ayuda en foros o comunidades dedicadas al desarrollo de WSL u OpenGL.

Comments are closed.