Linux 독립형 OpenGL 사용

Linux 독립형 OpenGL 사용

Linux 그래픽 스택이 어떻게 작동하고 어떻게 함께 작동하는지 묻고 싶습니다.

지금까지 내가 이해한 것은 다음과 같이 작동한다는 것입니다. Linux 커널은 일반 드라이버와 GPU/공급업체별 드라이버가 모두 있는 DRM 메커니즘을 통해 GPU 드라이버를 노출합니다. KMS라고 불리는 계산과 비디오 출력의 두 부분으로 나뉩니다.

이제 Linux가 VT로 부팅되면 프레임 버퍼 드라이버를 사용하여 그래픽을 표시합니다. 그런 다음 X11을 시작한다고 가정하면 X11이 인계받아 (WM에 따라) KMS를 통해 무언가를 표시합니다.

OpenGL API는 소프트웨어 렌더링을 위해 CPU를 사용하거나 DRM의 컴퓨팅 부분을 통해 하드웨어 가속을 제공하는 ligGL 라이브러리를 통해 노출됩니다.

내 질문은 X11과 OpenGL 사이의 연결에 관한 것입니다. 지금까지 나는 이 작업이 GLX라는 X11 확장을 통해 수행되어야 한다고 읽었습니다. 하지만 실제로 어떻게 작동하는지 알고 싶습니다. 내가 아는 한 OpenGL은 X11(또는 다른 디스플레이 서버)과 완전히 독립적이므로 기술적으로 OpenGL(libGL)을 사용하여 그래픽을 계산한 다음 그래픽 데이터를 모든 디스플레이 서버에 전달하는 것이 가능해야 합니다. 또는 프레임 버퍼(물론 대부분의 경우 실제로는 X11/Wayland의 창 프레임 버퍼입니다).

내 질문은 어떻게 해야 하느냐는 것입니다. 즉, OpenGL의 렌더링/출력 프레임 버퍼를 가져와서 다른 것으로 전달하는 방법, 또는 그것이 작동하는 방식이라면 렌더링 시 일부 프레임 버퍼(예: X11 창의 프레임 버퍼)를 OpenGL에 바인딩하는 방법입니다. /산출?

관련 정보