나는 이것이 어떻게 작동하는지 이해하려고 노력하고 있습니다. 따라서 X 응용 프로그램과 OpenGL 응용 프로그램이라는 두 가지 유형의 응용 프로그램이 있습니다. X 응용 프로그램은 Xlib를 사용하여 화면에 그리지만 OpenGL은 어떻게든 X를 완전히 우회하고 GPU에 직접 렌더링합니까? 어떻게 이루어 집니까?
X와 OpenGL이 모두 실행 중인 경우 내 컴퓨터는 어떤 항목을 화면에 렌더링할지 어떻게 알 수 있나요? 우선순위가 있나요? X가 실행되는 동안 이를 무시하고 덮어쓸 수 있습니까? 내가 올바르게 이해했다면 이것이 OpenGL 응용 프로그램이 수행하는 작업인 것 같습니다.
답변1
OpenGL 응용 프로그램은 "X를 우회"하지 않으며 표면을 제공하고 그 위에 그리는 데 X가 필요합니다. 그런 다음 X는 해당 표면을 화면에 투영하는 방법을 결정합니다. 가끔 앱이 정지된 경우 창을 이동할 때 표면이 밝은 녹색 직사각형으로 표시되는 경우가 있습니다.
예전에는 화면에 직접 그릴 수 있었습니다. 그러나 이제 합성 창 관리자가 있으므로 어떤 의미에서는 스스로 이를 수행할 수 있습니다. 따라서 화면에 그리기 위한 API를 계속 사용할 수 있지만 WM은 콘텐츠를 초당 60회만 덮어씁니다.