- Go 개발자가 여러 운영체제와 WebAssembly를 대상으로 즉시 모드 GUI를 만들 수 있게 하는 라이브러리임
- Linux, macOS, Windows, Android, iOS, FreeBSD, OpenBSD, WebAssembly까지 지원해 플랫폼 범위가 넓음
- 의존성을 줄이고 창 관리·입력·GPU 그리기는 각 플랫폼 라이브러리를 활용하는 설계임
- 렌더링은 OpenGL ES와 Direct3D 11 기반의 Pathfinder 벡터 렌더러를 포함하며, piet-gpu 기반 컴퓨트 셰이더 렌더러로 이동 중임
- 텍스트와 도형을 텍스처로 굽지 않고 외곽선으로 렌더링해 애니메이션, 변환 그리기, 픽셀 해상도 독립성을 지원함
Gio의 목적과 지원 범위
- Gio는 Go로 효율적이고 부드럽고 이식 가능한 GUI를 만들기 위한 라이브러리임
- 지원 플랫폼은 Linux, macOS, Windows, Android, iOS, FreeBSD, OpenBSD, WebAssembly임
- 빠른 시연용 WebAssembly 데모가 있으며, 실행하려면 WebAssembly 지원 브라우저가 필요함
- 예제 소스는 Kitchen project에서 확인할 수 있음
설치와 학습 경로
- Gio는 적은 의존성을 목표로 설계됨
- 플랫폼별 설치 문서에서 필요한 의존성을 확인할 수 있음
- 설치 후에는 Learn 문서와 Hello World로 시작할 수 있음
- 쇼케이스에는 godcr, Tailscale, gotraceui, Sointu, Protonet 등이 포함됨
렌더링 기술
- Gio는 즉시 모드 그래픽 패러다임의 유연성과 최신 2D 그래픽 기술을 결합함
- 벡터 렌더러는 Pathfinder project를 기반으로 하며 OpenGL ES와 Direct3D 11 위에 구현됨
- 렌더러는 piet-gpu 위에 구축되는 더 효율적인 컴퓨트 셰이더 기반 렌더러로 이동 중임
- 텍스트와 도형은 텍스처 이미지로 미리 굽지 않고 외곽선만 사용해 렌더링함
- 효율적인 애니메이션을 지원함
- 변환된 그리기에 적합함
- 픽셀 해상도 독립성을 유지할 수 있음
후원 모델
- Gio 개발 자금은 후원으로 조달됨
- 프로젝트가 유용하다면 OpenCollective의 Gio 프로젝트 또는 개발자 직접 후원을 고려할 수 있음