EGL是否需要GPU?

时间:2018-11-23 14:22:01

标签: opengl virtual-machine gpu egl

我正在尝试针对服务器上的问题进行服务器端渲染。 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未初始化,或者无法初始化。”默认显示返回没有错误,因此我认为问题是无法初始化。因此,我试图找出为什么未初始化。

1 个答案:

答案 0 :(得分:2)

如果要在硬件加速中使用EGL,则需要GPU。因此,没有GPU的服务器收效甚微。

如果您仍然希望使用软件在服务器上进行渲染并使用OpenGL API,则可以查看mesaGL软件的实现。

但是,如果您使用软件进行渲染,则可以开始使用任何其他方法,例如软件光线跟踪器,例如pov ray