GTK 장면 그래프 키트
GTK Scene Graph Kit| 원저작자 | 마누엘 바시 외 |
|---|---|
| 개발자 | GNOME 프로젝트 |
| 초기 릴리즈 | 2017년 3월 , 전( |
| 기입처 | C |
| 운영 체제 | GTK의 일부 |
| 유형 | 소프트웨어 라이브러리 |
| 면허증. | LGPL |
| 웹 사이트 | developer |
GSK(GTK Scene Graph Kit)는 버전 3.90에서 도입된 GTK용 렌더링 및 장면 그래프 API입니다.GSK는 그래픽 제어 요소(위젯)와 렌더링 사이에 있습니다.
GDK와 마찬가지로 GSK는 GTK의 일부이며 GNU Lesser General Public License(LGPL)에 따라 라이센스가 부여됩니다.
근거
GSK는 GTK의 일부입니다.GSK는 GTK 자체 및 UI를 Clutter로 대체하려는 GTK 기반 응용 프로그램에서 사용됩니다.GTK만을 사용하는 것이 아니라 Clutter를 사용한 어플리케이션으로는 GNOME Shell, GNOME 비디오, GNOME 박스, 치즈 등이 있습니다.
GTK의 그래픽 제어 요소(위젯)를 사용하는 애플리케이션은 GTK 창을 열고 그 위에 직접 그리는 것과 달리 GSK의 이점을 누릴 수 있습니다.
성능
화면그래프 없이 그래픽 컨트롤 요소(위젯)를 그리면 화면에 표시되지 않는 것, 렌더링할 필요가 없는 것이 렌더링되므로 성능 저하와 배터리 지속 시간 손실을 피할 수 있습니다.장면 그래프는 숨겨진 표면을 결정하는 데 사용됩니다.
심플함
GTK(Clutter를 사용하지 않을 때)에서 위젯을 그리는 방법은 그리기 기능(GDK의 일부이므로 이름(GIMP "드로잉" Kit))이 모든 것을 그리는 것이었습니다.방금 그린 게 뭔지 알 길이 없었어요.마우스 포인터가 현재 어디에 있는지 알기 위해서는 현재 위치를 계산해야 합니다.GSK를 사용하면 복잡한 그래픽 제어 요소(위젯)를 쓰면서도 마우스 포인터의 위치를 쉽게 추적할 수 있습니다.
CSS
GTK는 그래픽 제어 요소(위젯)를 스타일링(테마/스킨)하고 렌더링하는 방법을 위해 CSS(Cascading Style Sheet) 기반 모델로 전환하기로 결정했습니다.CSS에서 그림자, 테두리, 패딩 및 스타일 속성은 명확하게 정의된 의미를 가집니다.이러한 의미론 중 일부는 오래된 GTK 도면 모델로는 구현하기 어렵다.
GSK는 포인트, 크기, 직사각형, 벡터, 쿼드, 사분원, 매트릭스 등 지오메트리 유형의 컬렉션을 저장하는 외부 라이브러리인 [1]그래핀을 사용합니다.그래핀은 Meson 빌드 시스템으로 이식되었습니다.
GSK 렌더링 파이프라인
GSK는 듀얼 레이어 [2]어프로치를 사용합니다.
- 하위 계층은 단순한 렌더링 작업 트리입니다. 상태 변화를 최소화하면서 적절한 렌더링 명령으로 변환할 수 있으므로 렌더링 파이프라인으로 변환됩니다.렌더링 작업 트리는 GskRenderNode 인스턴스로 표시됩니다.GskRenderer 인스턴스는 렌더링 노드를 가져와서 (가능성이 있는 순서를 변경하여 보다 적절한 표현으로 변환한 후) 기본 그래픽 시스템에 제출합니다.
- 상위 계층: 복잡한 논리 계층 집합. 애플리케이션 개발자를 위한 고급 편의 API를 추가합니다.
API 렌더링
GTK 4의 개발 버전 번호인 GTK 3.90에서 GSK는 다음 백엔드를 사용한 렌더링을 지원합니다.
역사
어수선하다
Clutter는 2006년 6월 22일에 일반에 공개되었습니다.통합 라이브러리 "clutter-gtk"는 2006-11-29부터 [3]사용할 수 있습니다.
2011년 8월에 베를린에서 개최된 제2회 데스크탑 서밋에서는, 「GTK+ 4.0 and Clutter 2.0」[4]에 관한 이야기가 꽤 있었습니다.
GTK에 장면 그래프를 도입하는 아이디어
2008년, Harbase Pennington등의 개발자는, GTK외의 사람들이 Clutter, Antex, HippoCanvas,[5] 또는 GooCanvas등의 것을 사용하고 있기 때문에, GTK에 씬 캔버스를 추가하는 것을 검토하고 있었습니다.그래픽 제어 요소(위젯)를 좀 더 유연한 장면 그래프에서 한 종류의 객체로 만드는 것이 제안되었다.
GSK
GSK 이전에는 드로잉이 GDK에 의해 이루어졌습니다.그것은 그리기 프리미티브, 래스터 그래픽스(비트맵), 커서, 폰트, 윈도 이벤트 및 드래그 앤 드롭 [6]기능과 같은 기본적인 렌더링을 처리합니다.
2006년 6월 OpenGL 기반의 인터랙티브 캔버스 라이브러리인 Clutter가 출시되었습니다.Clutter는 자체 장면 그래프를 가지고 있으며 GNOME 개발자들은 Clutter-gtk라는 [7]라이브러리에 의해 촉진된 GTK와 함께 Clutter의 장면 그래프를 사용하는 것을 선호했다.clutter-gtk 라이브러리를 사용하면 모든 GNOME 응용 프로그램에 clutter를 삽입할 수 있습니다.Clutter-gtk 라이브러리는 ClutterStage 표시에 사용할 수 있는 GtkClutterEmbed GTK 위젯을 제공합니다.
어떤 사람들은 Clutter와 GTK를 clutter-gtk 라이브러리보다 더 나은 방법으로 결합하는 방법을 생각했다.
2011년 파이어폭스는 "Azure"를 선보였고 Joe Drew와 Bas Schouten은 몇 가지 [8][9][10]해명에 골머리를 앓았다.
- Brno Emmanuele에서 열린 GUADEC2013에서 GNOME 플랫폼 내에서 장면 그래프와 애니메이션 프레임워크 구현에 대한 아이디어를 공유했습니다(지난 6년간 Clutter에서 [11]일한 후).
- GSK(GTK Scene Graph Kit)는 Emanuele Bassi가 [12]작성 중인 GTK의 향후 장면 그래프입니다.
- 2014년 7월 30일, Emanuelle은 독립 실행형 Clutter 2.0은 [13]없어야 한다고 생각한다고 말했다.
2014 Developer Experience Hackfest에서 GTK+ [14]3.16으로의 통합을 목표로 한 GTK의 새로운 장면 그래프에 관한 프레젠테이션이 있었습니다.그 후 GSK는 2016년 3월에 출시될 GTK+ 버전 3.20에 완전히 통합될 예정이었다.이것은 3.22로 [15]연기되어 최종적으로 3.90으로 통합되었습니다.
GDK에서 OpenGL(또는 OpenGL ES)을 지원하면 그래픽스 파이프라인을 보다 효율적으로 제어할 수 있습니다.OpenGL은 텍스처 데이터의 합성에는 매우 적합하지만 [citation needed]그리기에는 전혀 적합하지 않습니다.
GSK의 현황에 대한 최신 정보는 GUADEC [16]2016에서 확인할 수 있습니다.
기타 프로젝트
- 계몽재단 라이브러리는 2000년부터 Evas [17]라이브러리에 구현된 장면 그래프를 사용해 왔습니다.
- Qt는 재설계되었으며 버전 5부터는 씬그래프 기반 [18]렌더링과 함께 Qt Quick 2를 제공합니다.
「 」를 참조해 주세요.
레퍼런스
- ^ Bassi, Emmanuele (2014-05-02). "Graphene".
- ^ Bassi, Emmanuele (2016-10-18). "Initial implementation of GSK rendering pipeline".
- ^ Bassi, Emmanuele (2006-11-29). "add clutter-gtk".
- ^ Bassi, Emmanuele (2011-08-31). "GTK+ 4.0 and Clutter 2.0: rainbows and unicorns".
- ^ Pennington, Havoc (2008-03-07). "Havoc Pennington's scene graph proposal".
- ^ Bassi, Emmanuele (2014-07-29). "The GTK+ Scene Graph Kit".
- ^ "clutter-gtk on git.gnome".
- ^ "Introducing the Azure project". 2011-04-26. Archived from the original on 2016-09-08. Retrieved 2017-03-17.
- ^ "Comparing Performance: Azure vs Cairo". 2011-06-06.
- ^ "Releasing Azure". 2011-08-16.
- ^ Bassi, Emmanuele (2013-08-12). "Future in the past GTK scene-graph".
- ^ Bassi, Emmanuele (2014-07-29). "The GTK+ Scene Graph Kit".
- ^ Bassi, Emmanuele (2014-07-30). "Halting Problem – Future in the Past".
- ^ "2014 Developer Experience Hackfest: A scene graph for GTK+ 3.16".
- ^ "GNOME Wiki: roadmap for GTK+".
- ^ Bassi, Emmanuele (2016-08-16). "GTK: are we in the future, yet?".
- ^ "Evas".
- ^ "Qt Quick Scene Graph".
외부 링크
- GSK4용 GNOME 참조 매뉴얼 불안정
- GSK(wiki.gnome.org)
- GSK Demystified (I), (II), (III) – Emmanuele Bassi, 2016/08
- 릴리스 GTK 3.89.5의 GSK 코드
- 현대 Gtk 드로잉 모델– Alexander Larsson, 2013/11/04
- GTK 및 라이브러리 개요 - GTK 프로젝트
- https://git.gnome.org/browse/gtk-web/plain/images/architecture.svg
- https://wiki.gnome.org/Projects/Clutter
- https://wiki.gnome.org/Projects/Clutter/Future
- https://wiki.gnome.org/Projects/Clutter/Apocalypses
- https://wiki.gnome.org/Projects/Clutter/Roadmap