Opengl 使用EGL的要求是什么?

Opengl 使用EGL的要求是什么?,opengl,nvidia,serverless,egl,Opengl,Nvidia,Serverless,Egl,我想尝试在没有真正的窗口系统的情况下在服务器端将图像重新编辑成文件。接下来,EGL应该能够做到这一点 我可以访问Ubuntu服务器,其中安装了以下软件包:freeglu3、freeglut3-dev、libegl1-mesa-dev和libglew-dev。这允许编译、链接和运行示例应用程序。运行nvidiasmi表示驱动程序高于版本460,高于文章中提到的3xx 当我尝试执行这个简单的示例程序时,eglInitialize返回false,eglGetError()被设置为EGL\u NOT\u

我想尝试在没有真正的窗口系统的情况下在服务器端将图像重新编辑成文件。接下来,EGL应该能够做到这一点

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

当我尝试执行这个简单的示例程序时,
eglInitialize
返回false,
eglGetError()
被设置为
EGL\u NOT\u INITIALIZED

EGLDisplay eglDpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);
EGLint major, minor;
eglInitialize(eglDpy, &major, &minor);
博客帖子和其他答案说我应该链接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)
和idneed,查看生成的.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和headless渲染所需的任何其他依赖项。

libegl1 mesa dev
是mesa的,而不是nvidia的EGL实现,您这里似乎有一些奇怪的混合驱动程序。@derhass谢谢,我不知道这些不能一起工作,我将尝试其他软件包。