WebGL å ¥é
WebGL è®ç¶²é å
§å®¹è½èç±ä¸ç¨®åºæ¼ OpenGL ES 2.0 ç API ç幫å©ï¼æ¼æ¯æ´æ¤ API çç覽å¨ç°å¢ä¸ï¼ä¸é使ç¨å¤æç¨å¼å°±è½å¨ HTML ç canvas å
ç´ ä¸å¯¦ç¾äºç¶åä¸ç¶æ¸²æã WebGL ç¨å¼å
å«äºç± JavaSrcipt åèè²å¨(GLSL)æ°å¯«çæ§å¶ç¢¼ä»¥åå¨é»è
¦çåå½¢èçå¨( GPU )ä¸å·è¡çç¹æç¨å¼ç¢¼(èè²å¨ç¨å¼ç¢¼)ãWebGL å
ç´ å¯ä»¥å å
¥å
¶ä» HTML å
ç´ ä¹ä¸ä¸¦èç¶²é æç¶²é èæ¯çå
¶ä»é¨åæ··åã
éç¯æç« å°æåä½ ä»ç´¹ WebGL çåºç¤ãéç¯æç« åè¨ä½ å·²ç¶å°æ¼ä¸ç¶å叿¶åçæ¸å¸ææäºè§£ï¼ä¸¦ä¸å®å°ä¸æè¢«ä½¯è£çºä¸ç¶åå¸çææã卿åçå¸ç¿ååå §æåå¸è æåè®ä½ å®æç·¨ç¨ä»»åï¼Learn WebGL for 2D and 3D graphics.
卿¤æå¸æä»¶ä¸çç¨å¼ç¢¼ç¯ä¾é½è½å¨ webgl-examples GitHub repository ä¹ä¸æ¾å°ã
æºåä¸ç¶æ¸²æ
é¦å ä½ éè¦ä¸å canvas å ç´ è® WebGL é²è¡æ¸²æãä¸é¢ç HTML å®ç¾©ç canvas å ç´ ä¾å¾çºçç¯ä¾ç¹ªè£½ã
<body>
<canvas id="glCanvas" width="640" height="480"></canvas>
</body>
æºå WebGL èæ¯è³æ
å註ï¼èæ¯è³æçº Context ç¿»è¯èä¾
å¨ä¸é¢ç JavaScript ç¨å¼ç¢¼ï¼ç¶æä»¤å®æè®å徿å·è¡ main() å½å¼ãç®çæ¯çºäºè¨å® WebGL èæ¯è³æä¸¦ä¸éå§æ¸²æå
§å®¹ã
main();
// å¾ééå§
function main() {
const canvas = document.querySelector("#glCanvas");
// åå§å GL context
const gl = canvas.getContext("webgl");
// ç¶ WebGL æææç¹¼çºå·è¡
if (gl === null) {
alert("ç¡æ³åå§å 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 åææé¡¯ç¤ºè¨æ¯çµ¦ä½¿ç¨è
並ä¸é¢éã
妿æååå§åï¼ gl å°±ææçºä¸å WebGL èæ¯è³æçåèãå¨é裡æåè¨ç½®æ¸
é¤è²çºé»è²ï¼ä¸¦ééè©²è²æ¸
é¤ context (ç¨èæ¯è²éæ°ç¹ªè£½ canvas )ã
è³æ¤ï¼ä½ å·²ç¶æè¶³å¤ åå§å WebGL èæ¯è³æçç¨å¼ç¢¼ï¼ä¸¦ä¸æºå好äºçå¾ æ¥æ¶å §å®¹ç容å¨ã
亦å¯åè
- WebGL Fundamentals
- An intro to modern OpenGL: ç± Joe Groff æ°å¯«çä¸ç³»åéæ¼ OpenGL ç好æç« ï¼æä¾äº OpenGL æ¸ æ¥çç°¡ä»ï¼å¾å ¶æ·å²å°éè¦çåå管路æ¦å¿µï¼ä»¥åä¸äºå±ç¤ºå ¶åççç¯ä¾ãå¦æä½ å®å ¨ä¸æ OpenGLï¼éå°æ¯ä¸å好çå ¥éä»ç´¹ã