Skip to content

Instantly share code, notes, and snippets.

@hakatashi
Created December 14, 2016 10:41
Show Gist options
  • Save hakatashi/d42051d6edf9e8b28f0a609feecbd467 to your computer and use it in GitHub Desktop.
Save hakatashi/d42051d6edf9e8b28f0a609feecbd467 to your computer and use it in GitHub Desktop.
TSG 第14回Web分科会 カンペ

TSG 第14回Web分科会 カンペ

CanvasとWebGLの周辺技術について学ぶ

Hello, World!

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Hello World</title>
	</head>
	<body>
		<canvas class="canvas" width="300" height="300"></canvas>
		<script>
			const canvas = document.querySelector('.canvas');
			const context = canvas.getContext('2d');

			context.fillStyle = 'salmon';
			context.fillRect(0, 0, 300, 300);

			context.textAlign = 'center';
			context.font = '48px sans-serif';
			context.fillStyle = 'white';
			context.fillText('Hello World!', 150, 150);
		</script>
	</body>
</html>

こんな画像が表示されればOK。

Canvasとは

HTML5で新たに導入されたAPI群の一つ。DirectXやOpenGLと似たような、「画面への図形の描画」を行うことができる。

Canvasは他の要素と異なり、内部にDOMを持たない。つまり保持するのは描画されたピクセルのデータのみであり、そこになにが描画されたかという情報を保持しない。

Canvasを扱うライブラリ

CanvasのAPIは上の Hello World でみた通りかなりめんどくさいものであり、また一度描画した物体を動くすために画面を再描画する処理を自力で実装しないといけない。

そのため、Canvasを簡単に扱うためのラッパーライブラリが(一時期はゴミのように)たくさん存在しており、実際にCanvasを扱うときはこれらのうちのどれかを用いることになると思われる。

例えば⋯⋯

などなど。

Canvasの利点

  • 高速
  • Flashの代替

WebGL

さきほど挙げた例は、CanvasRenderingContext2Dという主にCanvasの2次元描画を扱う実装を使っていたが、Canvasにはこれ以外にもいくつかのコントキストが用意されている。

その中で最も有名なのが、WebGLである。これはブラウザからGPUを使用して3D図形の描画などを高速に行うことができるAPI。

WebGLを扱うライブラリ

WebGLのAPIはCanvas以上に人間が扱うものではないため、これも適当なライブラリを使うのがよい。

フォールバックとしてただのCanvasにも描画できる用に設計されているものが多い。

実習

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment