! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

WebGL을 사용하여 차트에서 수백만개의 데이터 포인트 렌더링하기 > 블로그 & Tips

본문 바로가기

WebGL을 사용하여 차트에서 수백만개의 데이터 포인트 렌더링하기

페이지 정보

작성자 GrapeCity 작성일 2020-05-28 00:00 조회 3,552회 댓글 0건

본문

JavaScript 차트인 FlexChart에서는 SVG를 기본 렌더링 대상으로 사용합니다. SVG는 다수의 응용 프로그램에 맞는 탁월한 선택이며 다음과 같은 많은 이점이 있습니다.

  • CSS로 사용자 정의할 수 있는 고품질의 세련된 벡터 2D 그래픽을 제공합니다.
  • 브라우저를 포함한 탁월한 소프트웨어 지원이 포함된 범용적인 이식 가능한 서식을 제공합니다.
  • 최신 브라우저에서 상당히 빠르게 작동합니다.

SVG는 확실히 다수의 응용 프로그램에서 빠르게 작동합니다. 몇 년 전에 브라우저의 SVG 성능으로 인해 놀란 적이 있지만, 빅 데이터에서는 여전히 충분한 속도를 내지 못하고 있습니다. 예를 들어 분산 차트를 살펴보면 각 요소는 SVG(실제로는 DOM)의 요소로서, 구문 분석, 할당, 시각적 트리에 추가, 렌더링이 필요합니다. 요소가 수백 개이면 문제가 되지 않지만, 10만 개 이상일 경우 브라우저에 부담이 되기 시작합니다.

우리는 빅 데이터의 세계에 살고 있으므로 최대한 많은 데이터를 표시하고 싶을 때가 많습니다. 막대한 양의 데이터 집합이 포함된 분산 차트는 여러 변수 간의 상관관계를 시각화하고 분석하는 데 사용할 수 있습니다. 제가 가장 좋아하는 것 중 하나는 별의 광도를 표시한 다이어그램입니다.

우리에게는 SVG보다 더 빠른 무언가가 필요합니다. 웹에 사용할 수 있는 다른 그리기 API로 CanvasWebGL이 있습니다. 먼저 Canvas에 대해 속성으로 성능 테스트를 했지만, 그 결과가 전혀 인상적이지 못해 WebGL을 사용해 보기로 결정했습니다.


WebGL 렌더링 사용하기


WebGL은 브라우저에서 무언가를 빠르게 그릴 때 탁월한 성능을 발휘합니다. 주요 특성은 다음과 같습니다.

  • 현재로서 속도가 가장 빠른 웹용 2D 및 3D 그래픽입니다. WebGL은 하위 수준의 하드웨어 가속 API로서, 다른 그리기 API에 비해 GPU를 더 효율적으로 사용합니다.
  • 모든 주요 브라우저에서 WebGL을 지원하며, IE11도 '실험적'이긴 하지만 실행 가능한 WebGL이 있습니다.

이처럼 유망해 보이는 WebGL도 다음과 같은 몇 가지 결점이 있습니다.

  • 기본적인 그리기 요소만 제공합니다(대부분 삼각형). 텍스트 출력은 전혀 없습니다.
  • 출력은 인쇄하거나 벡터 서식으로 내보낼 경우 잘 확장되지 않는 비트맵입니다.
  • 개발하고 디버깅하기가 더 까다롭습니다(특히 SVG에 비해). 셰이더, 변환과 같은 GPU 프로그래밍에 관한 일부 지식이 필요합니다.

거의 모든 그림에는 범례, 레이블, 제목 등 텍스트 요소가 있기 때문에 첫 번째 결점은 가장 심각한 것입니다.


JavaScript 응용 프로그램에서 하이브리드 렌더링을 사용하는 방법


다행히도 다음과 같은 방법으로 SVG와 WebGL 그리기 기법을 쉽게 결합할 수 있습니다.

  • 축, 범례, 레이블과 같은 기본적인 차트 요소에 사용되는 SVG를 사용합니다.
  • 대량의 데이터 요소(예: 분산 차트의 요소)를 표시하는 데 WebGL 을 사용합니다.




이 접근 방식을 통해 두 가지 그리기 API 모두에서 최상의 기능을 끌어낼 수 있습니다. 최신 릴리스에서는 FlexChart WebGLRenderEngine을 위한 새로운 고성능 렌더링 엔진을 도입하였습니다(wijmo.chart.webgl module). 이 새 엔진은 앞서 설명한 '하이브리드' SVG+WebGL 그리기를 구현합니다. 새 엔진을 활성화하려면 다음과 같이 FlexChart의 renderEngine 속성을 설정해야 합니다.

flexChart.renderEngine = new wijmo.chart.webgl.WebGLRenderEngine();

대규모 데이터 집합이 포함된 분산 차트에 대한 성능은 SVG보다 일반적으로 10-20배 더 빨라 상당히 좋은 결과를 보입니다. 이와 동시에 새로운 렌더링 엔진은 기존 코드 및 CSS 스타일 지정과 호환되어야 합니다.

데이터 집합의 양이 막대한 경우에만 WebGL 렌더링이 유용한 것은 아닙니다. 다수의 요소가 포함된 방대한 웹 페이지나 다중 또는 동적 차트가 포함된 응용 프로그램에도 WebGL 렌더링이 쓰일 수 있습니다.

  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기

태그1

인기글

더보기
  • 인기 게시물이 없습니다.
메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.