WebGL 使å¾å¨æ¯æ HTML ç canvas
æ ç¾çæµè§å¨ä¸ï¼ä¸éè¦å®è£
任使件ï¼ä¾¿å¯ä»¥ä½¿ç¨åºäº OpenGL ES 2.0 ç API å¨ canvas ä¸è¿è¡ 2D å 3D 渲æãWebGL ç¨åºå
æ¬ç¨ JavaScript åçæ§å¶ä»£ç ï¼ä»¥åå¨å¾å½¢å¤çåå
ï¼GPU, Graphics Processing Unitï¼ä¸æ§è¡ççè²ä»£ç ï¼GLSLï¼æ³¨ï¼GLSL 为 OpenGL çè²è¯è¨ï¼ãWebGL å
ç´ å¯ä»¥åå
¶ä» HTML å
ç´ æ··å使ç¨ï¼å¹¶ä¸å¯ä»¥åç½é¡µå
¶ä»é¨åæè
ç½é¡µèæ¯ç»åèµ·æ¥ã
æ¬æå°åä½ ä»ç» WebGL çåºæ¬ç¨æ³ãæ¤å¤åå®ä½ 对ä¸ç»´å¾å½¢æ¹é¢çæ°å¦ç¥è¯å·²ç»æä¸å®ççè§£ï¼æ¬æä¹ä¸ä¼è¯å¾åä½ ææ 3D å¾åæ¦å¿µæ¬èº«ã
æ¬æç代ç ä¹å¯ä»¥å¨è¿éä¸è½½ GitHub ä¸ç webgl-examples æä»¶å¤¹ã
THREE.jsåBABYLON.jsçå¾å¤æ¡æ¶å°è£ äº WebGLï¼æä¾äºå个平å°ä¹é´çå ¼å®¹æ§ã使ç¨è¿äºæ¡æ¶èéåçç WebGL å¯ä»¥æ´å®¹æå°å¼å 3D åºç¨å游æã
åå¤ 3D 渲æä¸ºäºä½¿ç¨ WebGL è¿è¡ 3D 渲æï¼ä½ é¦å éè¦ä¸ä¸ª canvas å ç´ ãä¸é¢ç HTML çæ®µç¨æ¥å»ºç«ä¸ä¸ª canvas å ç´ å¹¶è®¾ç½®ä¸ä¸ª onload äºä»¶å¤çç¨åºæ¥åå§åæä»¬ç WebGL ä¸ä¸æã
<body onload="main()">
<canvas id="glcanvas" width="640" height="480">
ä½ çæµè§å¨ä¼¼ä¹ä¸æ¯ææè
ç¦ç¨äº HTML5 <code><canvas></code> å
ç´ ã
</canvas>
</body>
åå¤ WebGL ä¸ä¸æ
æä»¬ç JavaScript 代ç ä¸ç main()
彿°å°ä¼å¨ææ¡£å è½½å®æä¹å被è°ç¨ãå®ç任塿¯è®¾ç½® WebGL ä¸ä¸æå¹¶å¼å§æ¸²æå
容ã
// ä»è¿éå¼å§
function main() {
const canvas = document.querySelector("#glcanvas");
// åå§å WebGL ä¸ä¸æ
const gl = canvas.getContext("webgl");
// 确认 WebGL æ¯ææ§
if (!gl) {
alert("æ æ³åå§å WebGLï¼ä½ çæµè§å¨ãæä½ç³»ç»æç¡¬ä»¶çå¯è½ä¸æ¯æ WebGLã");
return;
}
// 使ç¨å®å
¨ä¸éæçé»è²æ¸
餿æå¾å
gl.clearColor(0.0, 0.0, 0.0, 1.0);
// ç¨ä¸é¢æå®çé¢è²æ¸
é¤ç¼å²åº
gl.clear(gl.COLOR_BUFFER_BIT);
}
æä»¬æè¦åç第ä¸ä»¶äºå°±æ¯æ¯è·å canvas çå¼ç¨ï¼æå®ä¿åå¨âcanvasâåééã
彿们è·åå° canvas ä¹åï¼æä»¬ä¼è°ç¨getContext 彿°å¹¶åå®ä¼ é "webgl"
åæ°ï¼æ¥å°è¯è·åWebGLRenderingContextã妿æµè§å¨ä¸æ¯æ webgl, getContext
å°ä¼è¿å null
ï¼æä»¬å°±å¯ä»¥æ¾ç¤ºä¸æ¡æ¶æ¯ç»ç¨æ·ç¶åéåºã
妿 WebGL ä¸ä¸ææååå§åï¼åéâglâä¼ç¨æ¥å¼ç¨è¯¥ä¸ä¸æãå¨è¿ä¸ªä¾åéï¼æä»¬ç¨é»è²æ¸ é¤ä¸ä¸æå å·²æçå ç´ ãï¼ç¨èæ¯é¢è²éç» canvasï¼ã
æ¥ç宿´çæºç | 卿°æ ç¾é¡µä¸æ¥çæ¼ç¤º
åè§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