首页 > 解决方案 > 使用 EGL 有什么要求?

问题描述

我想尝试在没有真正的窗口系统的情况下将图像红化到服务器端的文件中。按照这篇文章,EGL 应该能够做到这一点。

我可以访问安装了以下软件包的 Ubuntu 服务器:freeglu3、freeglut3-dev、libegl1-mesa-dev 和 libglew-dev。这允许编译、链接和运行示例应用程序。运行nvidia-smi说驱动是460以上版本,高于文章中提到的3xx。

当我尝试执行简单的示例程序时,eglInitialize返回 false,并eglGetError()设置为EGL_NOT_INITIALIZED.

EGLDisplay eglDpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);
EGLint major, minor;
eglInitialize(eglDpy, &major, &minor);

博客文章和其他 SO 答案说我应该链接 libOpenGL.so。但我不是手动链接,我使用的是该文章中提供的 cmake 代码:

find_package(OpenGL REQUIRED COMPONENTS OpenGL EGL)
add_executable(your_binary_name main.c)
target_link_libraries(your_binary_name PRIVATE OpenGL::OpenGL OpenGL::EGL)

并且需要,查看使用 .so 文件生成的 cmake 文件:

your_binary_name: /usr/lib/x86_64-linux-gnu/libOpenGL.so
your_binary_name: /usr/lib/x86_64-linux-gnu/libEGL.so
your_binary_name: /usr/lib/x86_64-linux-gnu/libGLU.so
your_binary_name: /usr/lib/x86_64-linux-gnu/libGLEW.so
your_binary_name: /usr/lib/x86_64-linux-gnu/libGLX.so

我错过了什么?我找不到任何其他必需的依赖项来设置 EGL 和无头渲染。

标签: openglnvidiaserverlessegl

解决方案


推荐阅读