最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

WebGL學(xué)習(xí)教程之Three.js學(xué)習(xí)筆記(第一篇)

 更新時間:2019年04月25日 12:03:58   作者:nsytsqdtn  
Three.js是一個js的開源框架,它把webgl的所有東西都封裝好了,我們不再需要去了解webgl那些比較麻煩的細(xì)節(jié),直接在此框架上進(jìn)行開發(fā),既方便,又快捷,而且很容易就能學(xué)習(xí),感興趣的朋友跟隨小編一起看看吧

webgl介紹

WebGL是一種3D繪圖協(xié)議,它把JavaScript和OpenGL ES 2.0結(jié)合在一起,通過增加OpenGL ES 2.0的一個JavaScript綁定,WebGL可以為HTML5 Canvas提供硬件3D加速渲染。

WebGL技術(shù)標(biāo)準(zhǔn)免去了開發(fā)網(wǎng)頁專用渲染插件的麻煩,可被用于創(chuàng)建具有復(fù)雜3D結(jié)構(gòu)的網(wǎng)站頁面,甚至可以用來設(shè)計3D網(wǎng)頁游戲。

 原生的WebGl比較復(fù)雜,主要通過對頂點著色器和片元著色器的操作,來實現(xiàn)渲染,但實現(xiàn)起來比較復(fù)雜,需要一定的數(shù)學(xué)基礎(chǔ),但更多的是需要學(xué)習(xí)基礎(chǔ)的耐心。

Three.js介紹

Three.js是一個js的開源框架,它把webgl的所有東西都封裝好了,我們不再需要去了解webgl那些比較麻煩的細(xì)節(jié),直接在此框架上進(jìn)行開發(fā),既方便,又快捷,而且很容易就能學(xué)習(xí),相對于原生的webgl花100多行代碼畫幾個三角形,Three.js只需要幾行代碼就能實現(xiàn)更復(fù)雜的3D效果。

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

環(huán)境搭建

為了以后的學(xué)習(xí)方便,首先是搭建一個萬能框架,所有的three.js開發(fā)都可以在此框架上進(jìn)行。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Three.js</title>
  <script src="../../../Import/three.js"></script>
  <script src="../../../Import/stats.js"></script>
  <script src="../../../Import/Setting.js"></script>
  <style type="text/css">
    div#canvas-frame {
      border: none;
      cursor: pointer;
      width: 100%;
      height: 850px;
      background-color: #333333;
    }
  </style>
  <script>
    let renderer;
    function initThree() {
      //TODO
    }
    let camera;
    function initCamera() {
      //TODO
    }
    let scene;
    function initScene() {
      //TODO
    }
    let light;
    function initLight() {
      //TODO
    }
    let cube;
    function initObject() {
      //TODO
    }
    //提前定義好的一個功能文件,方便以后的每一個程序調(diào)用
    function initSetting() {
    loadAutoScreen(camera,renderer);//自適應(yīng)屏幕
    loadFullScreen();//網(wǎng)頁全屏播放
    loadStats();//性能檢測插件
    }
    function threeStart() {
      initSetting();
      initThree();
      initCamera();
      initScene();
      initLight();
      initObject();
      animation();
    }
    function animation(){
      renderer.clear();
      renderer.render(scene,camera);
      stats.update();
      requestAnimationFrame(animation);
    }
  </script>
</head>
<body onload="threeStart()">
<div id="canvas-frame"></div>
</body>
</html>

其中Setting.js是我寫在另一個文件里面的功能文件,把一些常用的功能放在里面,方便以后寫的程序可以直接去調(diào)用

Setting.js的代碼如下:

//進(jìn)入全屏模式的函數(shù)
function loadFullScreen() {
  //進(jìn)入全屏
  function requestFullScreen(element) {
    let de = document.querySelector(element) || document.documentElement;
    if (de.requestFullscreen) {
      de.requestFullscreen();
    } else if (de.mozRequestFullScreen) {
      de.mozRequestFullScreen();
    } else if (de.webkitRequestFullScreen) {
      de.webkitRequestFullScreen();
    }
  }
//退出全屏
  function exitFullscreen(element) {
    let de = document.querySelector(element) || document.documentElement;
    if (de.exitFullscreen) {
      de.exitFullscreen();
    } else if (de.mozCancelFullScreen) {
      de.mozCancelFullScreen();
    } else if (de.webkitCancelFullScreen) {
      de.webkitCancelFullScreen();
    }
  }
  //監(jiān)聽事件
  document.onkeydown = function (ev) {
    keydownForScreen(ev);
  }
  //按鍵檢測,112對應(yīng)鍵盤的F2,可以檢測其他的鍵位
  function keydownForScreen(ev) {
    if (ev.keyCode == 113) {
      requestFullScreen();
      requestFullScreen('body');
      requestFullScreen('#main');
    }
  }
}
//加載性能監(jiān)視器的函數(shù)
function loadStats() {
  stats = new Stats();
  stats.domElement.style.position = 'absolute';
  stats.domElement.style.left = '8px';
  stats.domElement.style.top = '8px';
  let body = document.getElementsByTagName('body');
  body[0].appendChild(stats.domElement);
}
//屏幕適應(yīng)的函數(shù)
function loadAutoScreen(camera, renderer) {
  window.addEventListener('resize', onResize, false);
  function onResize() {
    camera.aspect = window.innerWidth / window.innerHeight;
    camera.updateProjectionMatrix();
    renderer.setSize(window.innerWidth, window.innerHeight);
  }
}

還有另一個引入的文件stats.js的下載地址:https://github.com/mrdoob/stats.js

至此,一個萬能的架子就已經(jīng)搭建完成,可以開始編寫第一個three.js程序

總結(jié)

以上所述是小編給大家介紹的WebGL學(xué)習(xí)教程之Three.js學(xué)習(xí)筆記,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

相關(guān)文章

  • Bootstrap 3瀏覽器兼容性問題及解決方案

    Bootstrap 3瀏覽器兼容性問題及解決方案

    這篇文章主要為大家詳細(xì)介紹了 Bootstrap 3 瀏覽器兼容性問題及其對應(yīng)的解決方案,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • 快速上手uni-simple-router

    快速上手uni-simple-router

    這篇文章主要介紹了uni-simple-router,本文通過實例代碼給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-11-11
  • JavaScipt中棧的實現(xiàn)方法

    JavaScipt中棧的實現(xiàn)方法

    這篇文章主要介紹了JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之棧詳解,本文講解了對棧的操作、對棧的實現(xiàn)實例等內(nèi)容,需要的朋友可以參考下
    2016-02-02
  • JavaScript實現(xiàn)全選取消效果

    JavaScript實現(xiàn)全選取消效果

    這篇文章主要為大家詳細(xì)介紹了JavaScript實現(xiàn)全選取消效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • HTML中不支持靜態(tài)Expando的元素的問題

    HTML中不支持靜態(tài)Expando的元素的問題

    HTML中不支持靜態(tài)Expando的元素的問題...
    2007-03-03
  • js圖片放大鏡效果實現(xiàn)方法詳解

    js圖片放大鏡效果實現(xiàn)方法詳解

    這篇文章主要為大家詳細(xì)介紹了js圖片放大鏡效果的實現(xiàn)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • js子頁面獲取父頁面數(shù)據(jù)示例

    js子頁面獲取父頁面數(shù)據(jù)示例

    這篇文章主要介紹了js子頁面如何獲取父頁面數(shù)據(jù),需要的朋友可以參考下
    2014-05-05
  • 詳解JavaScript中常用操作符的使用

    詳解JavaScript中常用操作符的使用

    在 JavaScript 中,有一些操作符可以使代碼更簡潔、易讀和高效。這篇文章為大家整理了11個JavaScript中常用操作符的使用,需要的可以參考一下
    2023-04-04
  • easyui-edatagrid.js實現(xiàn)回車鍵結(jié)束編輯功能的實例

    easyui-edatagrid.js實現(xiàn)回車鍵結(jié)束編輯功能的實例

    下面小編就為大家?guī)硪黄猠asyui-edatagrid.js實現(xiàn)回車鍵結(jié)束編輯功能的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • uni-app小程序?qū)崿F(xiàn)微信在線聊天功能(私聊/群聊)

    uni-app小程序?qū)崿F(xiàn)微信在線聊天功能(私聊/群聊)

    這篇文章主要介紹了uni-app小程序?qū)崿F(xiàn)微信在線聊天(私聊/群聊),今天記錄一下項目核心功能的實現(xiàn)過程。頁面UI以及功能邏輯全部來源于微信,即時聊天業(yè)務(wù)的實現(xiàn)使用socket.io,前端使用uni-app開發(fā),后端服務(wù)器基于node實現(xiàn),數(shù)據(jù)庫選擇mongoDB,需要的朋友可以參考下
    2023-02-02

最新評論

黎川县| 四平市| 吉水县| 诏安县| 台南县| 和平区| 漳州市| 磐安县| 土默特右旗| 武清区| 丹东市| 梁平县| 秀山| 弥勒县| 准格尔旗| 义马市| 金沙县| 聂荣县| 裕民县| 法库县| 介休市| 北海市| 彰化县| 六枝特区| 崇义县| 灵山县| 荆门市| 罗平县| 揭阳市| 荥阳市| 吉安县| 苏尼特右旗| 遂昌县| 廊坊市| 永登县| 巴青县| 缙云县| 凉山| 湟中县| 云梦县| 井陉县|