[Flutter] Flutter의 렌더링 엔진

gigilee·2024년 5월 27일
0

Flutter 입문

목록 보기
6/10

Flutter는 네이티브 앱을 개발할 때와 같이 운영체제와 직접적으로 소통하지 않고, C언어 또는 C++ 언어로 작성된 렌더링 엔진을 사용하여 실제 UI를 렌더링한다.

운영체제와 직접적으로 소통하지 않기 때문에 네이티브 위젯을 사용할 수 없어 UI의 부자연스러움을 경험할 수도 있지만(Flutter는 네이티브 위젯과 유사하게 구현한 위젯을 제공한다.), 그렇기 때문에 다양한 플랫폼에서 사용할 수 있는 크로스 플랫폼이 될 수 있다.

또한, Flutter의 렌더링 엔진을 사용하기 때문에 커스터마이징에 유리한 이점이 있다.

Flutter는 어떤 렌더링 엔진을 사용하는가?

Flutter는 2D 렌더링 엔진인 Skia, iOS의 기본 렌더링 엔진인 Impeller을 사용한다.

Skia

  • C++로 개발된 오픈 소스 2D 그래픽 라이브러리로, 다양한 하드웨어 및 소프트웨어 플랫폼에서 공통 API를 제공한다.
    • Google Chrome, Chrome OS, Android, Flutter, Firefox, Firefox OS ···
  • OpenGL의 Canvas를 사용하여 렌더링한다.

Skia가 Flutter의 그래픽 엔진으로 채택된 이유

  • OpenGL을 사용하기 때문이다.
    • Windows, Mac OS 등등 모든 운영체제에서 사용할 수 있는 그래픽 라이브러리인 OpenGL은 Flutter가 크로스 플랫폼이 가능하도록 기여했다.

Skia 엔진의 문제점

  • 비용 문제
    • GPU에 명령을 보내는 코드 조각인 shader가 처음 실행될 때 GPU가 실행할 수 있는 명령으로 컴파일 되어야 하는데, 이 과정은 비용의 소모가 크다.

Impeller

  • iOS의 기본 렌더링 엔진으로 shader compile jank 문제를 개선하였다.

3.7 안정 릴리스에서는 iOS에서 Impeller를 미리 보았습니다. 그 이후로 사용자로부터 많은 훌륭한 피드백을 받고 해결했습니다. 이번 릴리스에서 Impeller에 대한 250개 이상의 커밋을 통해 Impeller를 iOS의 기본 렌더러로 설정했습니다. 기본적으로 Flutter 3.10으로 iOS용으로 빌드된 모든 앱은 Impeller를 사용합니다. 이러한 iOS 앱은 버벅거림이 적고 일관된 성능이 향상됩니다.

profile
Hello, World!

0개의 댓글

관련 채용 정보