我正在尝试为我正在处理的一个问题做服务器端渲染。EGL提供了一种在不需要窗口系统的情况下定义OpenGL上下文的方法。我已经能够在我的笔记本电脑上使用EGL成功地在屏幕外渲染,但是当我试图运行到digitalocean上的一个实例上的代码时,EGL无法初始化。在云提供商的计算资源上运行此代码的能力是我需要支持的用例之一。
我想知道EGL是否是一种可行的方法,但我不明白它为什么会失败。是否需要GPU?这是在虚拟机上运行的问题吗?
下面的代码重现了我遇到的问题,
#include <EGL/egl.h>
#include <assert.h>
int main(int argc, char** argv) {
EGLDisplay display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
assert(display != EGL_NO_DISPLAY);
EGLBoolean result = eglInitialize(display, NULL, NULL);
//assert(result != EGL_FALSE);
EGLint errcode = eglGetError();
assert(errcode == EGL_SUCCESS);
return 0;
} 在调用eglInitialize之后返回的错误代码是EGL_NOT_INITIALIZED,在标题中,这意味着“对于指定的EGL显示连接,EGL未初始化或无法初始化”。默认显示没有错误地返回,所以我认为问题在于它不能被初始化。所以我试着找出为什么没有初始化。
发布于 2018-11-23 22:36:24
如果你想使用带硬件加速的EGL,你需要一个GPU。因此,没有GPU的服务器带来的好处很少。
如果您仍然想在服务器上以软件的形式呈现并使用OpenGL应用程序接口,您可以研究一下mesaGL软件实现。
但如果是在软件中渲染,则可以开始使用任何其他方法,如软件光线跟踪器,如pov ray
https://stackoverflow.com/questions/53448411
复制相似问题