SlideShare a Scribd company logo
HTML5 Canvas Overview
성용진
웹클라이언트 개발실
2015.10.26
ⓒ 2011 NHNTECHNOLOGY SERVICES CORPORATION
목차
1. HTML5 Canvas 소개 및 특징
1. 소개 및 지원브라우저
2. CanvasRenderingContext2D
3. 즉시모드 / 보류모드
4. Mouse Event처리
2. Canvas 로 할 수 있는 것
1. DrawingShape
2. Pixel Manipulation
3. Animation
3. Canvas와 WebGL (1) (2)
4. Canvas와 Flash
5. Cavnas 적용사례
6. Q & A
3
1-1. HTML5 Canvas 소개 및 특징 ( 소개 및 지원브라우저 )
• Canvas 소개
• Canvas는브라우저에서 지원하는 2D 드로잉 플랫폼이다.
• HTML 요소의하나이며 HTML5에서지원을한다.
• Javascript와HTML 만을 이용하여 구현이 가능하다.
• Bitmap기반이며 즉시모드로 그래픽을 처리한다.
• 그래프를 그리거나 사진합성, 픽셀조작, 에니메이션의 처리가 가능하다.
• Low level의API를제공하여유연한 조작이 가능하나 그만큼 구현이 복잡하다.
• Canvas를지원하는 브라우저
• 모든 모바일 브라우저에서 Canvas 지원
• PC는 IE 8.0 이하는 지원되지 않음(2015년 상반기 국내 IE 8.0 이하 점유율 14%(statcounter ) , 28%( koreahtml5.kr)
4
1-2. HTML5 Canvas 소개 및 특징 ( CanvasRenderingContext2D )
• Canvas와 CanvasRenderingContext2D (이후Context2D 라 칭함 )
• Canvas 객체는 컨테이너로서의 역할만 하며 그래픽능력은 CanvasRenderingContext2D 객체에있다.
• Canvas 객체는 DOM 이지만 Context2D 에 그려지는 그래픽은 DOM으로 접근이 안되고 단지 비트맵일 뿐이다.
var theCanvas = document.getElementById("myCanvas" )
If( !theCanvas || !theCanvas.getContext )
{
}
<canvas id="myCanvas" width="200" height="100"></canvas>
• Canvas를지원하는지 알아보기
• Canvas의그리기 영역인 context가있는지 체크한다
5
1-3. HTML5 Canvas 소개 및 특징 ( 즉시모드 / 보류모드 )
• 즉시모드
• 그래픽 라이브러리는 장면에 그려지는 내부 모델에 대한 어떠한 정보도 유지하지 않는다
• 완성된 그림의 도형을 개별적으로 편집할 수 없으며, 매 프레임마다 전체장면을 다시 그리는 방식이다
• Canvas는즉시모드이다.
• 보류모드
• 그래픽 라이브러리는 렌더링할 내부 모델과 장면 그래프에 대한 정보를 유지한다
• 매 프레임마다 전체장면을 그리지 않고 변화된 부분만 그리게 된다
• Flash, SVG 등은보류모드이다.
< 즉시모드 > < 보류모드 >
6
1-4. HTML5 Canvas 소개 및 특징 ( Mouse Event 처리 )
• Context2D 에 그려진 Shape은픽셀의집합일 뿐이라 Shape에Mouse Event등을 정의하기가 어렵다.
• Flash나SVG 에서는 Shape을객체로 취급하여 다양한 속성과 기능, Event 처리가 가능하다.
var svgElement = document.getElementById("rect1");
svgElement.addEventListener("mouseover", mouseOver);
• Canvas 객체에 Mouse Event를걸며, callback으로들어온정보와 그려진 Shape 정보를비교하여 Event를판별한다.
• Canvas 객체에서 발생된 Mouse Event의 좌표점이 Shape 안에 포함되어 있는지를 조사한다.
canvas.addEventListener("mousemove", mousemove)
function mousemove(e)
{
// canvas를 기준으로 Mouse 위치 계산
var rect = canvas.getBoundingClientRect();
console.log(e.clientX - rect.left);
console.log(e.clientY - rect.top );
// 마우스 좌표가 shape(원) 안에 있는지 판별
// ( 마우스 위치 - 원의 중심) < (원의 반지름의 길이) 라면 원 안에 마우스가 있는 것이다.
}
• Shape 복잡할 경우 context.isPointInPath(x, y ) API를 이용할 수 있으나 성능이 떨어진다.
context.beginPath();
context.arc(150, 120, 100, 0, Math.PI*2, false);
context.arc(150, 120, 50, 0, Math.PI*2, true);
context.isPointInPath(e.offsetX, e.offsetY);
7
2-1. Canvas로 할 수 있는 것 ( Drawing Shape )
• 선, 직사각형, 원, 베지어 곡선을 그리기 위한 강력한 API를제공하여 다양한 Shape를그릴수 있다.
• 단색, 투명도, 그라디언트, 패턴 등으로 Shape을칠할수 있다.
• Shape의이동, 회전, 확대/축소가가능하다.
• transform 함수를 이용하여 Matrix을이용한 Transform이가능하다.
• 도형을 회전 할 경우 도형을 회전하는 것이 아니라 context를 회전하여 그리는 방식이다
< rotate 의 원리>
8
2-2. Canvas로 할 수 있는 것 ( Pixel Manipulation )
• getImageData(x,y,width,height) 메소드를 이용하여 Context2D의pixel 정보에 접근할 수 있다.
• pixel 정보는 배열타입이며 red, green, blue, alpha 값을접근하고 조작할 수 있다.
• 각 pixel 정보를 조작하여 brigtness, grayscale, contrast, saturation의효과를 줄 수 있다.
• RGBA는 각각 1byte의공간을 차지하므로 하나의 pixel은4byte의크기를 가진다
• 반복문으로 4byte 씩 이동하면서 각 픽셀의RGBA 값을 변형시킨다.
< brightness 의 원리>
9
2-3. Canvas로 할 수 있는 것 ( Animation/Game )
• Game에서Animation을표현할 때 Sprite SheetImage를 이용한다.
• drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh) API를이용한다.
ü requestAnimationFrame의사용
• Animation을구현할 때는 window.setInterval(), window.setTimeout()API를사용하지 않는다.
• 위 두 API는 리소스를 많이 사용하는 animation구현시 프레임의 손실이 발생한다.
• setInterval, setTimout의주기와 모니터 주파수 주기가 다를 경우 animation은튀게 된다.
(붉은색 화살표는 화면에 표시가 안 됨)
• window.requestAnimationFrame()은프레임 손실 없게 호출 해 줌 (60FPS)
• requestAnimationFrame은브라우저마다 이름이 약간씩 다르므로 주의가 필요
• webkitRequestAnimationFrame (크롬 ) / mozkitRequestAnimationFrame(파이어폭스)
모니터 주파수 : 60hz (16.7 ms)
setInterval 호출주기 : 10 ms
10
3-1. Canvas와 WebGL ( 1 )
• WebGL은OpenGL ES2.0을 기반으로 한다.
• HTML의Canvas에렌더링을하지만 context는WebGLRenderingContext객체로서
앞의 CanvasRenderingContext2D 와는전혀다른 기능을 가진다.
var canvas = document.getElementById("canvas");
gl = canvas.getContext("webgl");
• PC 는 IE11 이상, FF 4+, Chrome 9+, Safari 5.1+
• 모바일은 iOS 8 이상, Android는 크롬 브라우저 지원(version 30+)
• Javascirpt를이용하지만 OpenGL ShadingLanguage에대한이해가 필요하다.
• GPU는정점 (Vertex) 을 조작( Translate, Transformation)한다à Vertex Shader
• GPU는Rasterize 된Fragment에color를입힌다 à FragmentShader
11
3-2. Canvas와 WebGL ( 2 )
• Vertex Shader에서는 Vertex의조작(Transform, Translation)과
투영(Projecton)이 이루어지는데 Matrix를이용한다.
• 투영은 주로 원근 투영(Perspective Projection)을하여3D상의 정점을
2D로 표현(투영)하게 된다.
• FragmentShader에서는 image로부터Texel (Texture Pixel)를추출하여
Fragment에입힌다
12
4. Canvas와 Flash
• Flash에서 CreateJS Library (http://createjs.com/)를지원하여 Flash와비슷한 개발환경을 제공한다.
• 기존 FlashContents 를 그대로 Canvas로바꿀경우 CreateJS를이용하면디자인 리소스를 그대로 재활용이 가능하다.
• Animation
• FlashTimeline에정의된Animation은그대로Canvas Animation으로전환된다.
• 개발 코드가 없는 static 한 Animation, 광고(Banner)등이 변경 가능하다
• Casual Game
• Flash에서사용한 image asset을재활용 할 수 있다.
• Image는재사용이 가능하나 코드는 재개발이 필요하다.
• Google Swiff
• swf를 upload하면 canvas로변환해준다.
• Animation기반의 banner변환이 주 목적이다.
• https://developers.google.com/swiffy/
13
5. 네이버 Canvas 적용 사례
• 쥬니버 뽀로로 게임
• 쥬니버에서 서비스 중인 PC용 Flash뽀로로 게임 을 Canvas로전환하여모바일에서 서비스 함
• 스포츠 야구
• 네이버 스포츠에서 서비스중인 프로야구 문자 중계 서비스 Flash를Canvas로전환 함 (PC 웹)
Thank you.

More Related Content

PDF
[133] 브라우저는 vsync를 어떻게 활용하고 있을까
PDF
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
PPTX
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
PDF
[111] 네이버효과툰어떻게만들어졌나
PDF
iOS9 소개
PDF
Universal Rendering
PDF
Cooking jquery
PDF
웹 Front-End 실무 이야기
[133] 브라우저는 vsync를 어떻게 활용하고 있을까
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
[111] 네이버효과툰어떻게만들어졌나
iOS9 소개
Universal Rendering
Cooking jquery
웹 Front-End 실무 이야기

What's hot (20)

PDF
현실적 PWA
PPTX
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
PDF
오늘 당장 시작하는 HTML5
PDF
Service Worker 101 (한국어)
PDF
목적에 맞게 Angular, React, Vue
PPTX
Node.js + Websocket 삽질기
PDF
[111217 아꿈사연말모임] 웹소켓과온라인게임
PDF
[145]5년간의네이버웹엔진개발삽질기그리고 김효
PDF
[C5]deview 2012 nodejs
PDF
[D2 오픈세미나]3.web view hybridapp
PPTX
[123] electron 김성훈
PDF
우리가 몰랐던 크롬 개발자 도구
PDF
캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012
PPTX
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
PPTX
Deview2013 track1 session7
PDF
자바스크립트의 또다른 발전, Backbone.js
PPTX
Single-page Application
PDF
응답하라 반응형웹 - 4. angular
PDF
모바일 무한 스크롤 개발
PDF
2017. 프론트엔드 트랜드
현실적 PWA
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
오늘 당장 시작하는 HTML5
Service Worker 101 (한국어)
목적에 맞게 Angular, React, Vue
Node.js + Websocket 삽질기
[111217 아꿈사연말모임] 웹소켓과온라인게임
[145]5년간의네이버웹엔진개발삽질기그리고 김효
[C5]deview 2012 nodejs
[D2 오픈세미나]3.web view hybridapp
[123] electron 김성훈
우리가 몰랐던 크롬 개발자 도구
캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
Deview2013 track1 session7
자바스크립트의 또다른 발전, Backbone.js
Single-page Application
응답하라 반응형웹 - 4. angular
모바일 무한 스크롤 개발
2017. 프론트엔드 트랜드
Ad

Similar to [Naver d2]html5 canvas overview (20)

PPTX
Html5 소개 가이드
PPTX
5-1. html5 graphics
PDF
비개발자를 위한 Javascript 알아가기 #7.1
KEY
웹 기반 하이퍼포먼스 그래픽 처리 - 문경두
PDF
Canvas_basic tutorial
PDF
[Week4]canvas
PDF
제 5회 DGMIT R&D 컨퍼런스: HTML Graphics AP
PPTX
Html5 canvas study week1n2
PDF
[122]책에서는 맛볼 수 없는 HTML5 Canvas 이야기
PDF
What's new in IE11
PDF
20131217 html5
PDF
HTML5 기반 다매체 연동형 서비스 발전 방향(티비스톰 정운교 이사)
PPTX
Html5 canvas introduction
PDF
프론트엔드 개발자를 위한 Layer Model
PDF
[125]웹 성능 최적화에 필요한 브라우저의 모든 것
PDF
Learning HTML5
PDF
크로스브라우징
PPT
jhj port.
PDF
반응형, 적응형 웹, 그 다음은? (지훈 Ux pd)
PDF
HTML5 와 미래웹기술 part 3
Html5 소개 가이드
5-1. html5 graphics
비개발자를 위한 Javascript 알아가기 #7.1
웹 기반 하이퍼포먼스 그래픽 처리 - 문경두
Canvas_basic tutorial
[Week4]canvas
제 5회 DGMIT R&D 컨퍼런스: HTML Graphics AP
Html5 canvas study week1n2
[122]책에서는 맛볼 수 없는 HTML5 Canvas 이야기
What's new in IE11
20131217 html5
HTML5 기반 다매체 연동형 서비스 발전 방향(티비스톰 정운교 이사)
Html5 canvas introduction
프론트엔드 개발자를 위한 Layer Model
[125]웹 성능 최적화에 필요한 브라우저의 모든 것
Learning HTML5
크로스브라우징
jhj port.
반응형, 적응형 웹, 그 다음은? (지훈 Ux pd)
HTML5 와 미래웹기술 part 3
Ad

More from NAVER D2 (20)

PDF
[211] 인공지능이 인공지능 챗봇을 만든다
PDF
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
PDF
[215] Druid로 쉽고 빠르게 데이터 분석하기
PDF
[245]Papago Internals: 모델분석과 응용기술 개발
PDF
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
PDF
[235]Wikipedia-scale Q&A
PDF
[244]로봇이 현실 세계에 대해 학습하도록 만들기
PDF
[243] Deep Learning to help student’s Deep Learning
PDF
[234]Fast & Accurate Data Annotation Pipeline for AI applications
PDF
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
PDF
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
PDF
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
PDF
[224]네이버 검색과 개인화
PDF
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
PDF
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
PDF
[213] Fashion Visual Search
PDF
[232] TensorRT를 활용한 딥러닝 Inference 최적화
PDF
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
PDF
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
PDF
[223]기계독해 QA: 검색인가, NLP인가?
[211] 인공지능이 인공지능 챗봇을 만든다
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[215] Druid로 쉽고 빠르게 데이터 분석하기
[245]Papago Internals: 모델분석과 응용기술 개발
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[235]Wikipedia-scale Q&A
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[243] Deep Learning to help student’s Deep Learning
[234]Fast & Accurate Data Annotation Pipeline for AI applications
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[224]네이버 검색과 개인화
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[213] Fashion Visual Search
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[223]기계독해 QA: 검색인가, NLP인가?

[Naver d2]html5 canvas overview

  • 1. HTML5 Canvas Overview 성용진 웹클라이언트 개발실 2015.10.26 ⓒ 2011 NHNTECHNOLOGY SERVICES CORPORATION
  • 2. 목차 1. HTML5 Canvas 소개 및 특징 1. 소개 및 지원브라우저 2. CanvasRenderingContext2D 3. 즉시모드 / 보류모드 4. Mouse Event처리 2. Canvas 로 할 수 있는 것 1. DrawingShape 2. Pixel Manipulation 3. Animation 3. Canvas와 WebGL (1) (2) 4. Canvas와 Flash 5. Cavnas 적용사례 6. Q & A
  • 3. 3 1-1. HTML5 Canvas 소개 및 특징 ( 소개 및 지원브라우저 ) • Canvas 소개 • Canvas는브라우저에서 지원하는 2D 드로잉 플랫폼이다. • HTML 요소의하나이며 HTML5에서지원을한다. • Javascript와HTML 만을 이용하여 구현이 가능하다. • Bitmap기반이며 즉시모드로 그래픽을 처리한다. • 그래프를 그리거나 사진합성, 픽셀조작, 에니메이션의 처리가 가능하다. • Low level의API를제공하여유연한 조작이 가능하나 그만큼 구현이 복잡하다. • Canvas를지원하는 브라우저 • 모든 모바일 브라우저에서 Canvas 지원 • PC는 IE 8.0 이하는 지원되지 않음(2015년 상반기 국내 IE 8.0 이하 점유율 14%(statcounter ) , 28%( koreahtml5.kr)
  • 4. 4 1-2. HTML5 Canvas 소개 및 특징 ( CanvasRenderingContext2D ) • Canvas와 CanvasRenderingContext2D (이후Context2D 라 칭함 ) • Canvas 객체는 컨테이너로서의 역할만 하며 그래픽능력은 CanvasRenderingContext2D 객체에있다. • Canvas 객체는 DOM 이지만 Context2D 에 그려지는 그래픽은 DOM으로 접근이 안되고 단지 비트맵일 뿐이다. var theCanvas = document.getElementById("myCanvas" ) If( !theCanvas || !theCanvas.getContext ) { } <canvas id="myCanvas" width="200" height="100"></canvas> • Canvas를지원하는지 알아보기 • Canvas의그리기 영역인 context가있는지 체크한다
  • 5. 5 1-3. HTML5 Canvas 소개 및 특징 ( 즉시모드 / 보류모드 ) • 즉시모드 • 그래픽 라이브러리는 장면에 그려지는 내부 모델에 대한 어떠한 정보도 유지하지 않는다 • 완성된 그림의 도형을 개별적으로 편집할 수 없으며, 매 프레임마다 전체장면을 다시 그리는 방식이다 • Canvas는즉시모드이다. • 보류모드 • 그래픽 라이브러리는 렌더링할 내부 모델과 장면 그래프에 대한 정보를 유지한다 • 매 프레임마다 전체장면을 그리지 않고 변화된 부분만 그리게 된다 • Flash, SVG 등은보류모드이다. < 즉시모드 > < 보류모드 >
  • 6. 6 1-4. HTML5 Canvas 소개 및 특징 ( Mouse Event 처리 ) • Context2D 에 그려진 Shape은픽셀의집합일 뿐이라 Shape에Mouse Event등을 정의하기가 어렵다. • Flash나SVG 에서는 Shape을객체로 취급하여 다양한 속성과 기능, Event 처리가 가능하다. var svgElement = document.getElementById("rect1"); svgElement.addEventListener("mouseover", mouseOver); • Canvas 객체에 Mouse Event를걸며, callback으로들어온정보와 그려진 Shape 정보를비교하여 Event를판별한다. • Canvas 객체에서 발생된 Mouse Event의 좌표점이 Shape 안에 포함되어 있는지를 조사한다. canvas.addEventListener("mousemove", mousemove) function mousemove(e) { // canvas를 기준으로 Mouse 위치 계산 var rect = canvas.getBoundingClientRect(); console.log(e.clientX - rect.left); console.log(e.clientY - rect.top ); // 마우스 좌표가 shape(원) 안에 있는지 판별 // ( 마우스 위치 - 원의 중심) < (원의 반지름의 길이) 라면 원 안에 마우스가 있는 것이다. } • Shape 복잡할 경우 context.isPointInPath(x, y ) API를 이용할 수 있으나 성능이 떨어진다. context.beginPath(); context.arc(150, 120, 100, 0, Math.PI*2, false); context.arc(150, 120, 50, 0, Math.PI*2, true); context.isPointInPath(e.offsetX, e.offsetY);
  • 7. 7 2-1. Canvas로 할 수 있는 것 ( Drawing Shape ) • 선, 직사각형, 원, 베지어 곡선을 그리기 위한 강력한 API를제공하여 다양한 Shape를그릴수 있다. • 단색, 투명도, 그라디언트, 패턴 등으로 Shape을칠할수 있다. • Shape의이동, 회전, 확대/축소가가능하다. • transform 함수를 이용하여 Matrix을이용한 Transform이가능하다. • 도형을 회전 할 경우 도형을 회전하는 것이 아니라 context를 회전하여 그리는 방식이다 < rotate 의 원리>
  • 8. 8 2-2. Canvas로 할 수 있는 것 ( Pixel Manipulation ) • getImageData(x,y,width,height) 메소드를 이용하여 Context2D의pixel 정보에 접근할 수 있다. • pixel 정보는 배열타입이며 red, green, blue, alpha 값을접근하고 조작할 수 있다. • 각 pixel 정보를 조작하여 brigtness, grayscale, contrast, saturation의효과를 줄 수 있다. • RGBA는 각각 1byte의공간을 차지하므로 하나의 pixel은4byte의크기를 가진다 • 반복문으로 4byte 씩 이동하면서 각 픽셀의RGBA 값을 변형시킨다. < brightness 의 원리>
  • 9. 9 2-3. Canvas로 할 수 있는 것 ( Animation/Game ) • Game에서Animation을표현할 때 Sprite SheetImage를 이용한다. • drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh) API를이용한다. ü requestAnimationFrame의사용 • Animation을구현할 때는 window.setInterval(), window.setTimeout()API를사용하지 않는다. • 위 두 API는 리소스를 많이 사용하는 animation구현시 프레임의 손실이 발생한다. • setInterval, setTimout의주기와 모니터 주파수 주기가 다를 경우 animation은튀게 된다. (붉은색 화살표는 화면에 표시가 안 됨) • window.requestAnimationFrame()은프레임 손실 없게 호출 해 줌 (60FPS) • requestAnimationFrame은브라우저마다 이름이 약간씩 다르므로 주의가 필요 • webkitRequestAnimationFrame (크롬 ) / mozkitRequestAnimationFrame(파이어폭스) 모니터 주파수 : 60hz (16.7 ms) setInterval 호출주기 : 10 ms
  • 10. 10 3-1. Canvas와 WebGL ( 1 ) • WebGL은OpenGL ES2.0을 기반으로 한다. • HTML의Canvas에렌더링을하지만 context는WebGLRenderingContext객체로서 앞의 CanvasRenderingContext2D 와는전혀다른 기능을 가진다. var canvas = document.getElementById("canvas"); gl = canvas.getContext("webgl"); • PC 는 IE11 이상, FF 4+, Chrome 9+, Safari 5.1+ • 모바일은 iOS 8 이상, Android는 크롬 브라우저 지원(version 30+) • Javascirpt를이용하지만 OpenGL ShadingLanguage에대한이해가 필요하다. • GPU는정점 (Vertex) 을 조작( Translate, Transformation)한다à Vertex Shader • GPU는Rasterize 된Fragment에color를입힌다 à FragmentShader
  • 11. 11 3-2. Canvas와 WebGL ( 2 ) • Vertex Shader에서는 Vertex의조작(Transform, Translation)과 투영(Projecton)이 이루어지는데 Matrix를이용한다. • 투영은 주로 원근 투영(Perspective Projection)을하여3D상의 정점을 2D로 표현(투영)하게 된다. • FragmentShader에서는 image로부터Texel (Texture Pixel)를추출하여 Fragment에입힌다
  • 12. 12 4. Canvas와 Flash • Flash에서 CreateJS Library (http://createjs.com/)를지원하여 Flash와비슷한 개발환경을 제공한다. • 기존 FlashContents 를 그대로 Canvas로바꿀경우 CreateJS를이용하면디자인 리소스를 그대로 재활용이 가능하다. • Animation • FlashTimeline에정의된Animation은그대로Canvas Animation으로전환된다. • 개발 코드가 없는 static 한 Animation, 광고(Banner)등이 변경 가능하다 • Casual Game • Flash에서사용한 image asset을재활용 할 수 있다. • Image는재사용이 가능하나 코드는 재개발이 필요하다. • Google Swiff • swf를 upload하면 canvas로변환해준다. • Animation기반의 banner변환이 주 목적이다. • https://developers.google.com/swiffy/
  • 13. 13 5. 네이버 Canvas 적용 사례 • 쥬니버 뽀로로 게임 • 쥬니버에서 서비스 중인 PC용 Flash뽀로로 게임 을 Canvas로전환하여모바일에서 서비스 함 • 스포츠 야구 • 네이버 스포츠에서 서비스중인 프로야구 문자 중계 서비스 Flash를Canvas로전환 함 (PC 웹)