WebGLì íë¬ê·¸ì¸ì ì¬ì©íì§ ìê³ OpenGL ES 2.0 ê¸°ë° API를 ì´ì©íì¬ ë¸ë¼ì°ì ì HTML canvas
ì ë ëë§íì¬ 3D ì¹ ì½í
ì¸ ì ìì ê°ë¥íê² í©ëë¤. WebGL íë¡ê·¸ë¨ì ì»´í¨í°ì ê·¸ëí½ ì²ë¦¬ ì¥ì¹(GPU)ìì ì¤íëë JavaScriptë í¹ì í¨ê³¼(ì
°ì´ë ì½ë)ì½ëë¡ êµ¬ì±ë©ëë¤. WebGL ììë¤ì ë¤ë¥¸ HTML ììë¤ê³¼ í¼í©ë ì ìê³ íì´ì§ë íì´ì§ ë°°ê²½ì ë¤ë¥¸ ë¶ë¶ê³¼ í©ì±ë ì ììµëë¤.
ì´ ë¬¸ìë 기본 WebGL 기본 ì¬íì ìê°í©ëë¤. ì´ ë¬¸ìììë 3D ê·¸ëí½ì ê´ë ¨ë ìíì ì´í´ë¥¼ ì´ë¯¸ ì´í´íê³ ìë¤ê³ ê°ì£¼íê³ OpenGL ìì²´ì ëíì¬ ì¤ëª íì§ ìì ê²ì ëë¤.
3D ë ëë§ ì¤ë¹WebGLì ì¬ì©íì¬ 3D ë ëë§ì íë ë° ì²« ë²ì§¸ë¡ íìí ê²ì ìºë²ì¤ì ëë¤. ìë HTML ì½ëë canvas를 ë§ë¤ê³ ì¬ì©í WebGL 컨í ì¤í¸ë¥¼ ì´ê¸°ííë onload ì´ë²¤í¸ í¸ë¤ë¬ë¥¼ ì§ì í©ëë¤.
<body onload="start()">
<canvas id="glcanvas" width="640" height="480">
Your browser doesn't appear to support the HTML5
<code><canvas></code> element.
</canvas>
</body>
WebGL 컨í
ì¤í¸ ì¤ë¹
JavaScript ì½ëìì start()
í¨ìë 문ìê° ë¤ ë¶ë¬ìì§ë©´ í¸ì¶ë©ëë¤. ì´ í¨ìì 기ë¥ì WebGL 컨í
ì¤í¸ë¥¼ ì¤ì íê³ ì½í
ì¸ ë ëë§ì ììíë ê²ì
ëë¤.
var gl; // A global variable for the WebGL context
function start() {
var canvas = document.getElementById("glcanvas");
gl = initWebGL(canvas); // Initialize the GL context
// Only continue if WebGL is available and working
if (gl) {
gl.clearColor(0.0, 0.0, 0.0, 1.0); // Set clear color to black, fully opaque
gl.enable(gl.DEPTH_TEST); // Enable depth testing
gl.depthFunc(gl.LEQUAL); // Near things obscure far things
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); // Clear the color as well as the depth buffer.
}
}
첫 ë²ì§¸ í ì¼ì canvasì ëí 참조를 ì»ë ê² ì ëë¤. canvasë¼ë ë³ìì ì§ì í©ëë¤. ë¹ì°í canvas를 ë°ë³µì ì¼ë¡ 참조í íìë ìê³ ì ì ë³ìë¡ ì ì¥íë ê²ì í¼í´ì¼ í©ëë¤. ì§ì ë³ìë ê°ì²´ì íë 멤ë²ë¡ 참조í´ì¼ ë©ëë¤.
ìºë²ì¤ê° ìì¼ë©´ initWebGL()
ì´ë¼ë í¨ì를 í¸ì¶í ì ììµëë¤. ì´ í¨ìë ì¼ìì ì¼ë¡ ì ìëê³ WebGL 컨í
ì¤í¸ë¥¼ ì´ê¸°ííë ì¼ì í©ëë¤.
ë§ì½ 컨í ì¤í¸ê° ì±ê³µì ì¼ë¡ ì´ê¸°í ëë©´ glì ì´ë¥¼ 참조í©ëë¤. ì´ë² ìì ììë ê²ìì í¬ëª ììì ì¤ì íë©´ 컨í ì¤í¸ë¥¼ ê·¸ ììì¼ë¡ ì§ì í©ëë¤. ê·¸ ë¤ì 컨í ì¤í¸ë ì¤ì 매ê°ë³ìë¡ ì¤ì ë©ëë¤. ìì ììë ê¹ì´ í ì¤í¸ê° ê°ë¥íê³ ê°ê¹ì´ ë¬¼ì²´ê° ë©ë¦¬ ë¨ì´ì ìë 물체를 ê°ë¦¬ë ê²ì ì§ì í©ëë¤.
ì½ëìì ì´ê¸°í를 ì ë¬íë 목ì ì ì°ë¦¬ê° íë ¤ë ê² ì ë¶ ì ëë¤. ì ì í ì¤ì ë¡ ë¬´ì¸ê°ë¥¼ ì´ë»ê² ììíëê° ììë³¼ ê²ì ëë¤.
WebGL 컨í ì¤í¸ ìì±initWebGL()
í¨ìë ë¤ìê³¼ ê°ìµëë¤.
function initWebGL(canvas) {
gl = null;
try {
// Try to grab the standard context. If it fails, fallback to experimental.
gl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
} catch (e) {}
// If we don't have a GL context, give up now
if (!gl) {
alert("Unable to initialize WebGL. Your browser may not support it.");
gl = null;
}
return gl;
}
ìºë²ì¤ìì WebGL 컨í ì¤í¸ë¥¼ ì»ê¸° ìí´ canvasë¡ "webgl"ì´ë¼ê³ ë¶ë¦¬ë 컨í ì¤í¸ë¥¼ ìì²í ê²ì ëë¤. ë§ì½ì ì¤í¨íë¤ë©´ "experimental-webgl"ì´ë¼ë ì´ë¦ì¼ë¡ ìëí ê²ì ëë¤. ë§ì½ ì´ë§ì ë ì¤í¨íë¤ë©´ ì¬ì©ììê² ì¬ì© ì¤ì¸ ë¸ë¼ì°ì ê° WebGLì ì§ìíì§ ìëë¤ë ê²½ê³ ë¥¼ ì¶ë ¥í ê²ì ëë¤. ì´ê² ì ë¶ì ëë¤. ì´ ìì ìì glì null(WebGL 컨í ì¤í¸ë¥¼ ì´ì©í ì ìë¤ë ì미)ì´ê±°ë ë ëë§í WebGL 컨í ì¤í¸ë¥¼ 참조í ê²ì ëë¤.
ì°¸ê³ : experimental-webglì´ë¼ë ì´ë¦ì ì¬ì ê°ë° ì ì¬ì©ëë 컨í ì¤í¸ë¥¼ ìí ì¼ìì ì¸ ì´ë¦ì ëë¤. webglì ì¬ìì´ íì ëë©´ ì¬ì©ë©ëë¤.
ì´ ìì ìì ì´ ì½ëë WebGL 컨í ì¤í¸ê° ì±ê³µì ì¼ë¡ ì´ê¸°ííë ë° ì¶©ë¶í ì½ëì ëë¤. ì´ ì½ë를 íµí´ ê²ì ë°ì¤ ííì ë¹ ê³µê°ì´ íì±ëë©°, ì¬ê¸°ì ì½í ì¸ ë¥¼ ìì±í 기본 ì¤ë¹ê° ëììµëë¤.
ì¬ê¸°ë¥¼ í´ë¦íì¬ ìì 를 íì¸íì¸ì. ë¸ë¼ì°ì ê° WebGLì í¸ííë¤ë©´ ì¤íë ê² ì ëë¤.
WebGL 컨í ì¤í¸ í¬ê¸° ì¡°ì ì´ì ìë¡ì´ WebGL 컨í ì¤í¸ë ìë¡ì´ 컨í ì¤í¸ ì¸ì¤í´ì¤ë¥¼ ì»ììµëë¤. ê·¸ë¦¬ê³ CSS ìì´ ìºë²ì¤ ììì heightì widthë¡ ë·°í¬í¸ì í´ìë를 ì¤ì í©ëë¤. ìºë²ì¤ ììì ì¤íì¼ í¸ì§íë©´ ì¶ë ¥ëë í¬ê¸°ë¥¼ ë³ê²½ë ê²ì´ì§ë§ ë ëë§ í´ìëë ë³ê²½ëì§ ììµëë¤. ëí 컨í ì¤í¸ê° ìì±ë í ìºë²ì¤ ììì widthì height ìì±ì í¸ì§íë©´ ê·¸ë ¤ì§ë í½ì ì를 ë³ê²½í ì ììµëë¤. WebGL ë ëì í´ìë를 ë³ê²½íë ¤ë©´ ì¬ì©ìê° ìºë²ì¤ 문ì ì ì²´ ì°½ í¬ê¸°ë¥¼ ì¡°ì íê±°ë ì±ìì ê·¸ëí½ ì¤ì ì ì¡°ì í ì ìê² í길 ìí ê²ì ëë¤. WebGL 컨í ì¤í¸ viewport() í¨ìê° ë³ê²½í ììë ê²ì¼ë¡ ìë ¤ì ¸ ììµëë¤.
ë ëë§ë WebGL 컨í ì¤í¸ì í´ìë를 ìì íë ¤ë©´ ìì ëì¤ë glê³¼ canvas ë³ì를 ì¬ì©í´ì¼ ë©ëë¤.
gl.viewport(0, 0, canvas.width, canvas.height);
ìºë²ì¤ë CSS ì¤íì¼ê³¼ ë¤ë¥¸ í´ìëë¡ ë ëë§ëì´ì§ ë íë©´ìì ì°¨ì§íë í¬ê¸°ë¥¼ ë³¼ ê²ì ëë¤. CSSë¡ í¬ê¸°ë¥¼ ì¡°ì íë©´ ë®ì í´ìëìì ë ëë§íê±°ë ë¸ë¼ì°ì íë©´ì íëí ë ììì ì ì½íë ë° ì ì©í©ëë¤. ì¶ìë ìí¼ìí ìí°ìì¼ë¦¬ì´ì±(SSAA) í¨ê³¼ë¥¼ ì¬ì©í ë ê°ë¥í©ëë¤. (ë§ì ì±ë¥ ë¹ì©ì´ ë°ìíê³ ìì ê²°ê³¼ì´ê¸°ë íì§ë§) ìëì ì°¸ê³ ì¬íì ì´í´ë³´ë ê²ì´ ê°ì¥ ì¢ìµëë¤.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4