opengl - EGL 需要 GPU 吗?

标签 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,从 header 来看,这意味着“对于指定的EGL显示连接,EGL未初始化,或无法初始化”。返回默认显示没有错误,因此我认为问题是无法初始化。所以我试图找出为什么没有初始化。

最佳答案

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

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

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

关于opengl - EGL 需要 GPU 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53448411/

相关文章:

java - 如何避免相机在四元数旋转时翻转?

c++ - 将统一 float 传递给顶点着色器 opengl

azure - 访问 VM 的本地主机 - Azure

Linux VM 串行控制台每 3 分钟输出 "INFO ExtHandler Updated NIC state"

c - 在 OpenCL 和映射缓冲区中使用多个命令队列。我会遇到冲突吗?

parallel-processing - 两个大文件彼此的平行余弦相似度

OpenGL/GLSL - 纹理过滤的实现

python - 在 Kivy 中创建自定义图像类,将 mag_filter 设置为 "nearest"

mobile - 是否可以在 Linux 虚拟机上使用 Flutter 开发 iOS 应用程序?

cuda - 如何使用 Nvidia 多进程服务 (MPS) 运行多个非 MPI CUDA 应用程序?