WebGL学习教程之Three.js学习笔记(第一篇)

  

  

WebGL是一种3 d绘图协议,它把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的一个JavaScript绑定,WebGL可以为HTML5画布提供硬件3 d加速渲染。

  

WebGL技术标准免去了开发网页专用渲染插件的麻烦,可被用于创建具有复杂3 d结构的网站页面,甚至可以用来设计3 d网页游戏。

  

,原生的WebGl比较复杂,主要通过对顶点着色器和片元着色器的操作,来实现渲染,但实现起来比较复杂,需要一定的数学基础,但更多的是需要学习基础的耐心。

  

  

Three.js是一个js的开源框架,它把webgl的所有东西都封装好了,我们不再需要去了解webgl那些比较麻烦的细节,直接在此框架上进行开发,既方便,又快捷,而且很容易就能学习,相对于原生的webgl花100多行代码画几个三角形,Three.js只需要几行代码就能实现更复杂的3 d效果。

  

下载地址:https://github.com/mrdoob/three.js。

  

  

为了以后的学习方便,首先是搭建一个万能框架,所有的three.js开发都可以在此框架上进行。

        & lt; !DOCTYPE html>   & lt; html lang=癳n”比;   & lt; head>   & lt;元charset=皍tf - 8”比;   & lt; title> Three.js   & lt;脚本src=" https://www.yisu.com/Import/three.js "祝辞& lt;/script>   & lt;脚本src=" https://www.yisu.com/Import/stats.js "祝辞& lt;/script>   & lt;脚本src=" https://www.yisu.com/Import/Setting.js "祝辞& lt;/script>   & lt;风格类型=" text/css "比;   div# canvas-frame {   边界:没有;   光标:指针;   宽度:100%;   身高:850 px;   background - color: # 333333;   }   & lt;/style>   & lt; script>   让渲染器;   函数initThree () {//TODO   }   让相机;   函数initCamera () {//TODO   }   让现场;   函数initScene () {//TODO   }   让光;   函数initLight () {//TODO   }   让数据集;   函数initObject () {//TODO   }//提前定义好的一个功能文件,方便以后的每一个程序调用   函数initSetting () {   loadAutoScreen(相机,渲染器);//自适应屏幕   loadFullScreen();//网页全屏播放   loadStats();//性能检测插件   }   函数threeStart () {   initSetting ();   initThree ();   initCamera ();   initScene ();   initLight ();   initObject ();   动画();   }   函数动画(){   renderer.clear ();   renderer.render(场景、摄像头等);   stats.update ();   requestAnimationFrame(动画);   }   & lt;/script>   & lt;/head>   & lt; body>   & lt; div id=" canvas-frame "祝辞& lt;/div>   & lt;/body>   & lt;/html>      

其中Setting.js是我写在另一个文件里面的功能文件,把一些常用的功能放在里面,方便以后写的程序可以直接去调用

  

Setting.js的代码如下:

     //进入全屏模式的函数   函数loadFullScreen () {//进入全屏   函数requestFullScreen(元素){   让德=document.querySelector(元素)| | document.documentElement;   如果(de.requestFullscreen) {   de.requestFullscreen ();   }else if (de.mozRequestFullScreen) {   de.mozRequestFullScreen ();   }else if (de.webkitRequestFullScreen) {   de.webkitRequestFullScreen ();   }   }//退出全屏   函数exitFullscreen(元素){   让德=document.querySelector(元素)| | document.documentElement;   如果(de.exitFullscreen) {   de.exitFullscreen ();   }else if (de.mozCancelFullScreen) {   de.mozCancelFullScreen ();   }else if (de.webkitCancelFullScreen) {   de.webkitCancelFullScreen ();   }   }//监听事件   文档。onkeydown=function (ev) {   keydownForScreen (ev);   }//按键检测,112对应键盘的F2,可以检测其他的键位   函数keydownForScreen (ev) {   如果(ev)。键码==113){   requestFullScreen ();   requestFullScreen(身体的);   requestFullScreen(#主要的);   }   }   }//加载性能监视器的函数   函数loadStats () {   统计=new统计();   stats.domElement.style。位置=熬浴?   stats.domElement.style。左=8 px的;   stats.domElement.style。顶级=8 px的;   让身体=document.getElementsByTagName(身体的);   身体[0].appendChild (stats.domElement);   }//屏幕适应的函数   函数loadAutoScreen(相机,渲染器){   窗口。addEventListener(“调整”,onResize假);   函数onResize () {   相机。方面=窗口。innerWidth/window.innerHeight;   camera.updateProjectionMatrix ();   renderer.setSize(窗口。innerWidth window.innerHeight);   }   }

WebGL学习教程之Three.js学习笔记(第一篇)