Требуется ли для EGL графический процессор? - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь выполнить рендеринг на стороне сервера для проблемы, над которой я работаю.EGL предоставляет способ определения контекста для OpenGL без необходимости использования оконной системы.Мне удалось успешно выполнить рендеринг вне экрана с помощью EGL на моем ноутбуке, но при попытке запустить код на экземпляре в digitalocean EGL не удается инициализировать.Возможность запуска этого кода на вычислительном ресурсе от облачного провайдера - один из вариантов использования, которые мне нужно поддерживать.

Я хочу знать, является ли EGL жизнеспособным подходом, но я не понимаю, почему он терпит неудачу.Требуется ли графический процессор?Это проблема с запуском на виртуальной машине?

Следующий код воспроизводит проблему, с которой я столкнулся,

#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 голосов
/ 23 ноября 2018

Если вы хотите использовать EGL с аппаратным ускорением, вам нужен графический процессор.Таким образом, сервер без графического процессора обеспечивает небольшую выгоду.

Если вы хотите по-прежнему выполнять рендеринг на сервере в программном обеспечении и использовать API OpenGL, вы можете ознакомиться с программной реализацией mesaGL .

Но если вы выполняете рендеринг в программном обеспечении, вы можете начать использовать любые другие подходы, такие как программный трассировщик лучей, например pov ray

...