我在WSL Ubuntu上使用g++,使用git克隆了GLFW repo,使用ccmake
命令配置并生成二进制文件,然后使用“build”目录中的make
最终创建了.a
文件。(我不记得我到底安装了哪一个,因为我必须安装这么多。不管怎样,g++命令是有效的,所以我认为它是成功的)。之后,我在VS Code上做了一个项目,看起来像这样:
GLFW包含文件夹来自前面提到的克隆存储库,GLAD和KHR包含文件夹来自glad.dav1d.de,其中我将GL版本(在API下)设置为 3.3,将Profile设置为 Core。
在main.cpp
中,我放了一段用于初始化GLFW的简单代码:
# include <iostream>
# include <glad/glad.h>
# include <GLFW/glfw3.h>
int main()
{
// Initialize GLFW
if (!glfwInit()) {
std::cerr << "Failed to initialize 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 << "Success" << std::endl;
return 0;
}
然后用下面这个命令来编译这个项目:g++ -Wall -I./include/ -L./lib/ src/*.{c,cpp} -lglfw3 -lGL -lX11 -lpthread -lXrandr -lXi -ldl -o main
。没有任何警告或错误。运行可执行文件后,我得到错误消息,GLFW无法初始化。我有点困惑为什么会发生这种情况,所以我键入glxinfo
命令,发现我的DISPLAY
环境变量还没有设置。
我完全不知道这个变量是什么,也不知道它代表什么。在网上搜索了一下,我发现了export DISPLAY=:0.0
、export DISPLAY=1
和export DISPLAY=IP:0.0
,但都不起作用。有什么办法可以解决这个问题吗?
2条答案
按热度按时间ngynwnxp1#
Windows 10上的WSL不包括对GUI应用程序的支持。你可以用OpenGL/X库构建一个应用程序,当然,但运行它需要一个X服务器来实际显示它。
一般来说,你有3个选择。我相信所有这些都可以与OpenGL一起工作,尽管我还没有测试过它们中的每一个:
在这种情况下,你需要手动配置
DISPLAY
变量来指向你的Windows主机。你会找到一些相当complicated directions的方法来实现这一点,但恕我直言,最简单的方法是通过mDNS。webghufk2#
WSL 2现在支持Windows 11上的GUI应用程序:https://learn.microsoft.com/en-us/windows/wsl/tutorials/gui-apps
我刚刚安装了GPU驱动程序,更新了WSL,现在它为我工作。