【问题标题】:Does EGL require a GPU?EGL 是否需要 GPU?
【发布时间】:2019-04-26 04:01:44
【问题描述】:

我正在尝试针对我正在处理的问题进行服务器端渲染。 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 未初始化或无法初始化”。默认显示返回没有错误,所以我认为问题是它无法初始化。所以我想弄清楚为什么没有初始化。

【问题讨论】:

  • 我也有同样的情况。你是怎么解决这个问题的?

标签: opengl virtual-machine gpu egl


【解决方案1】:

如果您想将 EGL 与硬件加速结合使用,则需要 GPU。因此,没有 GPU 的服务器几乎没有什么好处。

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

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

【讨论】:

  • 我的目标是不必修改渲染代码,而是使用 EGL 来定义渲染的输出是在屏幕上还是到纹理,因为我想同时支持这两种用例。
猜你喜欢
  • 2023-02-06
  • 2020-08-31
  • 2021-09-29
  • 2021-05-29
  • 1970-01-01
  • 2021-11-05
  • 2017-10-26
  • 1970-01-01
  • 2020-11-06
相关资源
最近更新 更多