OpenGL을 사용하여 헤드리스 하드웨어 가속 서버 렌더링을 수행해야 하는데 이것이 pbuffer 및 FBO(프레임 버퍼 개체)를 사용하여 달성할 수 있다는 것을 알았습니다. 그러나 오늘날 이러한 방법에는 여전히 컨텍스트가 필요하며 실행 중인 X 서버 없이는 실행할 수 없습니다.
나는 제목으로 내가 하고 싶은 일을 정확히 수행한 Sun의 프리젠테이션(지금은 삭제되었지만 웹 아카이브에 있음)을 발견했습니다."GLP OpenGL 확장, 윈도우 시스템 없이 OpenGL 렌더링".
제안은 어떻게 됐나요? 현재 대안이 있거나 유사한 개발이 진행 중입니까?
답변1
최신 버전의 오픈 소스 Linux OpenGL 드라이버(Mesa[1]에서 제공하는 것)는 윈도우 시스템이 없는 헤드리스 시스템에서의 렌더링을 지원합니다. Intel Mesa 팀(제가 속해 있음)은 이 기능을 사용하여 X 서버 없이 헤드리스 컴퓨터에서 OpenGL 테스트를 실행합니다.
동료와 나는 libEGL의 GBM 백엔드 위에 Waffle [3] 프레임워크를 사용하여 Mesa의 테스트 스위트 Piglit [2]에 헤드리스 렌더링에 대한 지원을 추가했습니다. (GBM은 Generic Buffer Manager의 약자이며 중간 디스플레이 서버 없이 GPU 버퍼를 관리하는 데 사용됩니다.)
이 접근 방식을 사용하려는 경우 가능한 걸림돌 중 하나는 제가 아는 한 GBM이 포함된 EGL은 오픈 소스 Linux 드라이버에서만 지원된다는 것입니다. 응용 프로그램이 다른 Unix 또는 독점 드라이버를 지원해야 하는 경우에는 이 방법이 작동하지 않습니다.
EGL/GBM 사용에 관심이 있으시면 몇 가지 예제 코드를 알려드릴 수 있습니다.
(그런데 EGL에 익숙하지 않다면 이는 윈도우 시스템 독립적인 API로 GLX를 현대적으로 대체한 것입니다. GLX에 익숙하다면 두 API가 매우 유사하므로 EGL이 친숙하게 느껴질 것입니다.) .