canvas์ WebGL
webgl์ ๊ธฐ์กด canvas API์๋ ๋ณ๋๋ก openGL ๊ท๊ฒฉ์ ์ ๊ณตํ๋ ๋นํ์ค ํ์ฅ ๊ธฐ๋ฅ์ด๋ค.
canvas๊ฐ 2004๋
์ ๋์๊ณ , webgl์ ๋ชจ์ง๋ผ์ ์ํด 2011๋
์ ๋์๋ค.
canvas์ ๋น๊ตํ๋ฉด, ๋นํ์ค์ด๊ณ , ์ฑ๋ฅ์ด ๋ ์ข์ผ๋ฉฐ, 3D์ ์ต์ ํ๋์ด์๋ค๋ ์ ์ด ๋ค๋ฅด๋ค. 2D๋ผ๋ webgl์ด ๋ ๋น ๋ฅด๊ณ , gpu ๊ฐ์ ๋ฑ์ ์ฌ์ฉํ ์๊ฐ ์๋ค. ๋ค๋ง ์ข ์ด๋ ต๋ค.
๋นํ์ค์ด๋ผ๋ ๋๋ถ๋ถ์ ๋ฉ์ด์ ๋ธ๋ผ์ฐ์ ๋ค์ ๋ค ์ง์ํ๊ธด ํ๋ค.
ํ๋ฒ ๊ฐ๋จํ๊ฒ ์ฌ์ฉํด๋ณด๊ฒ ๋ค.
์๋๋ ์บ๋ฒ์ค์ ๊ฒ์์๋ง์ ์น ํ๋ ๊ฐ๋จํ ์์ ๋ค.
openGL์ ์๋ค๋ฉด ์ด๋ ต์ง ์์ ๊ฒ์ด๋ค.
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div class="">
<canvas id="canvas" width="300" height="300"></canvas>
<button onclick="onButtonClicked()">ํด๋ฆญ</button>
</div>
</body>
<script>
function onButtonClicked() {
const canvas = document.getElementById("canvas");
const webgl = canvas.getContext("webgl");
if (!webgl) {
alert("webgl ๋ฏธ์ง์!");
return;
}
webgl.clearColor(0.0, 0.0, 0.0, 1.0); // #000000 ๊ฒ์์ ์ค์
webgl.clear(webgl.COLOR_BUFFER_BIT|webgl.DEPTH_BUFFER_BIT); // ์์๊ณผ depth buffer๋ฅผ ์ค์
}
</script>
</html>
์ฐ์ ๊ทธ๋ฆด ๋ฐํ์ด ๋ ์บ๋ฒ์ค๋ฅผ ํ๋ ๋ง๋ จํด์ผ ํ๋ค.
๊ทธ๋ฆฌ๊ณ webgl ์ปจํ
์คํธ๋ฅผ ๊ฐ์ ธ์์ ์ง์ ์ฌ๋ถ๋ฅผ ๊ฒ์ฆํ๋ค.
์ปจํ
์คํธ๊ฐ ์ ๊ฐ์ ธ์์ก๋ค๋ฉด, rgb๊ฐ ์ฃผ๊ณ clear๋ง ํด์ฃผ๋ฉด ๋๋ค.
์ฌ๊ธฐ์ depth buffer๋ผ๋ ๊ฐ๋ ์ด ์ข ์์ํ ์๋ ์๋ค. ์ด๊ฑด 2D๊ฐ ์๋๋ผ 3D ๋ ๋๋ง์ ์ฌ์ฉ๋๋ ๊ฐ๋ ์ผ๋ก, ๊ฐ๊น์ด ์๋ ๋ฌผ์ฒด๊ฐ ๋ ๊ฐ๊น์ด ๊ทธ๋ ค์ง๊ฒ ํด์ฃผ๋ ๊ฒ์ด๋ค. ๋น์ฅ ์ด ์ฝ๋์์๋ 2D๋ก๋ง ๊ทธ๋ฆฌ๊ณ ์์ผ๋ ์๊ด์ ์๋ค.
๊ทธ๋ผ ์ด๋ ๊ฒ ๊ทธ๋ ค์ง ๊ฒ์ด๋ค.
์ฐธ์กฐ
https://webglfundamentals.org/webgl/lessons/ko/webgl-fundamentals.html
https://developer.mozilla.org/ko/docs/Web/API/WebGL_API/Tutorial/Getting_started_with_WebGL