一. 何为WebGL?
WebGL 是基于Web的 三维渲染接口,与OpenGL的不同之处在于,添加了对 JavaScript 的支持,能够为 HTML5 提供硬件加速的三维图形渲染(通过Canvas来和DOM打交道)。
WebGL 是基于 OpenGL ES 2.0 的 Javascript API。通过 HTML5 的 Canvas 来和 DOM 打交道。
讲到这里,总结一下:
1. 如果你是OpenGL程序员,学习WebGL对你来讲会是非常简单的;
你只需要熟悉 JS 语法 和WebGL对应的API就好了,大多数人两个月能够入门。
2. 如果你只是熟悉 Web,那么GL对你来讲也许是个挑战;
你要熟悉3D坐标系、World-View-Proj 成像、三维渲染流程、Shader等等,也许需要更多的时间。
幸运的是,Three.js 引擎已经为我们提供了底层的封装,你需要提前熟悉三维渲染流程,然后 run demo,这是最好的也是最快的入门流程。
Three.js 已在主流浏览器下得到支持,调试建议用 FireFox 或者 Chrome,下载地址:https://threejs.org/ ,下图是第一个例子效果:
二. Canvas
Canvas是 HTML5 新定义的标签,可以看成是一个矩形绘图容器,支持事件响应 与 JavaScript 绘图。
Canvas和GDI绘图接口比较类似,来看下如何采用Canvas绘制一个矩形:
<html>
<head/>
<body>
<canvas id="Canvas2D"/>
<script type="text/javascript">
var canv=document.getElementById('Canvas2D');
var context=canv.getContext('2d');
context.fillStyle='#0000FF';
context.fillRect(10,10,120,80);
</script>
</body>
</html>
三. 加载 Three.js引擎
通过 Three.js 进行渲染,需要调用 three.js 接口,这是一个 JavaScript库,简要使用方式如下:
<html>
<head>
<script type="text/javascript" src="three.js"></script>
</head>
<body>
<canvas id="Canvas3D" width="352px" height="288px"/>
<script type="text/javascript">
// render
var renderer = new THREE.WebGLRenderer();
// scene
var scene = new THREE.Scene();
// camera
var camera = new THREE.PerspectiveCamera(45, 4 / 3, 1, 1000);
renderer.render(scene, camera);
</script>
</body>
</html>
熟悉基本知识和环境之后,下一节介绍 Hello World 入门!