xclient의 프론트 버퍼에서 루트 윈도우의 백 버퍼로 복사 할 때 compiz는 어떤 메커니즘을 사용합니까?xclient의 프론트 버퍼에서 루트 윈도우의 백 버퍼로 복사 할 때 compiz는 어떤 메커니즘을 사용합니까?
나는 컴 피즈 소스에서이 절차를 찾을 수 없습니다. xclient의 윈도우 'frontbuffer가 루트 백 버퍼를 업데이트하도록 업데이트 될 때마다 호출하는 함수가 있습니까?
xclient의 프론트 버퍼에서 루트 윈도우의 백 버퍼로 복사 할 때 compiz는 어떤 메커니즘을 사용합니까?xclient의 프론트 버퍼에서 루트 윈도우의 백 버퍼로 복사 할 때 compiz는 어떤 메커니즘을 사용합니까?
나는 컴 피즈 소스에서이 절차를 찾을 수 없습니다. xclient의 윈도우 'frontbuffer가 루트 백 버퍼를 업데이트하도록 업데이트 될 때마다 호출하는 함수가 있습니까?
Copiz는 오프 스크린 픽스맵으로 창을 리디렉션 할 X Composite extension를 사용합니다. 그런 다음 GLX/OpenGL에 대한 GLX_EXT_texture_from_pixmap 확장을 사용하여 오프 스크린 픽스맵을 OpenGL 텍스처로 전송합니다.
조성물 위해 혼합은 X 서버는 루트 윈도우 (윈도우 루트 윈도우 인 부모)와 화면 보호 층 사이에 배치되는 특수 합성 윈도우 층을 제공 가능. Compiz는 복합 레이어에서 창을 만들고, 해당 창에 대한 OpenGL 컨텍스트를 만들고 OpenGL 드로잉 명령을 사용하여 컴포지션을 수행합니다.는 OpenGL을 사용하지 않는 컴포 지터가 있습니다. 그런 다음 서버 측 컴포지션 (Composite 프로토콜 자체를 테스트하는 경우를 제외하고는 오히려 쓸모가 없음)을 사용하거나 XRender 드로잉 메서드를 사용합니다. 기술적으로 X 코어 드로잉 메서드도 작동하지만 변형 및 확장은 지원하지 않습니다. 당신이 보통 작곡가를 갖고 싶어하는 것들.
아무것도는 컴포 지터에 의해 루트 창으로 그려지지 않습니다. 모든 컴포지션은 컴포지트 레이어로 이동합니다. 내가 이해
그래서, 복합 레이어는 화면 버퍼에 대한 전체 화면 백 버퍼처럼? 텍스처 (어린이 창 '픽스맵 (pixmaps)에서 복합 레이어로 옮기는 compiz의 메커니즘은 무엇인가? – LZOO
@LZOO : 아니, 합성 레이어는 작곡가가 활성화되었을 때 실제로 본 것입니다. Windows는 오프 스크린 픽스맵으로 ** 리다이렉트 **를받습니다. 이것은 오프 스크린 백 버퍼로 간주 될 수 있습니다. 그러나 "거대한"전체 화면 백 버퍼가 없습니다. 모든 일은 XCreateWixow 대신 XCreatePixmap을 사용하여 만든 것처럼 각 창을 화면 외부의 픽스맵으로 처리한다는 것입니다. 이것이 바로 RedirectWindow가하는 일입니다. 창에서 RedirectWindow를 닫으면 주 화면에서 사라지고 그 내용을 어떻게 든 가져 와서 작성자가 보이는 버퍼에 그려야합니다. – datenwolf
@LZOO : 합성 레이어가있는 이유는 합성기가 대개 루트 윈도우를 리디렉션하기 때문입니다. 그러나 리다이렉트 된 윈도우의 자식 인 모든 것들은 오프 스크린이됩니다. 그러나 작곡가는 작곡을 그릴 때 * 화면에 ** * ** 항목이 필요합니다. 그것이 컴포지트 레이어가 문자 그대로 그림으로 들어가는 곳입니다. – datenwolf