位置: 编程技术 - 正文

THREE.JS入门教程(5)你应当知道的十件事(three. js)

编辑:rootadmin
Three.js是一个伟大的开源WebGL库,WebGL允许JavaScript操作GPU,在浏览器端实现真正意义的3D。但是目前这项技术还处在发展阶段,资料极为匮乏,爱好者学习基本要通过Demo源码和Three.js本身的源码来学习。 0.简介 嗨,这是我的第一篇关于如何写出好的代码的文章。和很多开发者一样,我通过实践学习,但同时我也向其他更有经验的开发者们学习。在过去的几个月中,我在canvas标签上花了很多时间,我想如果把这段时间学到的关于WebGL和JavaScript的小技巧都写下来,一定很有意思。有一些很具体,有一些却很笼统,希望你们喜欢! 1.尽快写一个原型 让我们从简单的开始。现在你有个绝妙的注意,那么你应该尽快就程序里最复杂的部分写一个原型,看看这项技术是否可以实现你的想法。WebGL很强大,因为它可以直接操纵显卡里的GPU,但是也别忘了你需要通过JavaScript才能访问显卡,这比显卡内部运算的效率可是低多了。事实上,你的天才想法很可能被这种简单事情击败。 2.使用THREE.JS处理3D 就像我的朋友Hakim一样,我也完全理解我们正使用的技术的底层细节。理解表面之下的东西是很重要的,但是如果你使用three.js,它为你免去了如此多的烦恼。你可以将它用于Canvas,WebGL还有SVG,你也应该找到哪种方式合适你的需求。 3.避免SetInterval 这对所有使用JavaScript创建动画的人来说,都是很重要的一点。为什么?假定你设定每毫秒后执行一次某个函数,而这个函数需要执行超过毫秒的时间,那么ms之后,浏览器不会在乎,而是直接开始下一次执行。至少你可以使用SetTimeout来设置,在某个函数执行完之后,再次执行它。 事实上,有一个更加新潮却还是半成品的函数,叫做requestAnimationFrame,它很棒。它很类似于setTimeOut函数,除了在这两个方面:当标签页失去焦点时,它就不再运行了;现在这个函数还是依赖于浏览器的,标准以后还有可能变化。如果你想要更多的信息,可以访问Paul Irish的博客。 4.使用倒序循环 这是个不错的小技巧,可以让你的循环更快。使用倒序,而且使用while循环。比如,这个循环: 它的执行效率不如下面这个循环: 这可能没帮你省多少开销,因为执行的效率主要还是依赖于你在循环体里面干了什么。但如果你想程序的不必要开销减少到最后一个字节,后一个循环肯定赢。 实话说,主要影响程序执行效率的还是数组缓存的长度。你可以(也确实应该)去看看JSPerf去了解这一点,以及其他影响JavaScript性能的因素。 5.使用纹理 在WebGL里面把物体的任意一个细节都画出来看上去很诱人,但是,如果有可能的话,你应当注意一下你是否能够使用纹理,因为它能够极大地提高性能。在某些特定的情况下,比如阴影或者模糊效果,你也许不得不使用纹理,但在其他时候,你也应该时时关注你是否可以使用纹理。 6.使用缓存 这一点我在自己的试验力试了很多,在帧循环中,你应当避免引用变量、对象或者其他任何东西。基于这点原因,很值得把你的模型、顶点全部缓存起来,这样在渲染动画的时候你就可以快速地访问到它们。 7.禁用选中 我爱这一小段代码,我把它放到任何包含Canvas或WebGL的页面中。 你也可能只想在Canvas控件中禁用选中。这段是我在那些Canvas占据了整个屏幕的项目中使用的代码。 8.避免在JavaScript中定义CSS 现在,在JavaScript中定义CSS简直太方便了,尤其是你使用JQuery的时候 问题是这样做之后,你的JavaScript代码中很快就充斥着各种类型的CSS定义,而你同时又使用*.css文件来定义CSS,潜在的问题很难被发现。更好的方法是:使用class模块化CSS,而且只在JavaScript中定义那些不能预知的CSS类。 9.在对象中定义回调函数 我爱下面这段代码,这绝不是我自己想出来的,但它是如此整洁美观。如果你有一大堆回调函数要用,你也许会这样用的: 或者,你会回调一个在代码其他地方定义的松散的函数,比如这样 这样做会有一些问题。第一段代码中,你在某个事件上绑定了匿名函数,你很难将该函数再从事件上解除下来。你当然可以解除某个事件上的所有函数,但你可能在它上面绑定了多个函数,而你只想解除一个。在第二种情况下,你的函数名污染了全局变量空间,代码的可维护性降低了。所以,考虑这样做: 这样做整洁又干净,而且避免了上面提到的两个问题。 .链式三元运算符 我完全是从Paul Irish的《JQuery,你应该知道的件事》中学到这个的。这非常好用,你也应该会喜欢。我们经常这样做: 但如果你想这样做,比如,当值为多少时如何,当值大于多少时如何,当值更加大的时候如何,明白吗?在这种情况下,链式三元运算符非常好用:

推荐整理分享THREE.JS入门教程(5)你应当知道的十件事(three. js),希望有所帮助,仅作参考,欢迎阅读内容。

THREE.JS入门教程(5)你应当知道的十件事(three. js)

文章相关热门搜索词:three.js bim,three.js 教程,three.js stl,three. js,threejs入门教程,three.js入门指南,three.js 教程,threejs入门教程,内容如对您有帮助,希望把文章链接给更多的朋友!

js鼠标点击事件在各个浏览器中的写法及Event对象属性介绍 IE左键是window.event.button=1右键是window.event.button=2中键是window.event.button=4没有按键动作window.event.button=0Firefox左键是event.button=0右键是event.button=2中键是event.b

THREE.JS入门教程(6)创建自己的全景图实现步骤 译序Three.js是一个伟大的开源WebGL库,WebGL允许JavaScript操作GPU,在浏览器端实现真正意义的3D。但是目前这项技术还处在发展阶段,资料极为匮乏,爱好

js中parseFloat(参数1,参数2)定义和用法及注意事项 今天在看jquery的时候里面用到了parseFloat(第一个参数,),一直不懂第二个参数是什么意思,于是上网查了一下,怕以后忘记就记下来。定义和用法:par

标签: three. js

本文链接地址:https://www.jiuchutong.com/biancheng/379143.html 转载请保留说明!

上一篇:THREE.JS入门教程(4)创建粒子系统(three.js 教程)

下一篇:js鼠标点击事件在各个浏览器中的写法及Event对象属性介绍(js鼠标点击事件监听)

  • 个体户需要做利润分析吗
  • 建筑企业开票都开什么
  • 一揽子交易定义
  • 收到捐赠设备
  • 现金折扣要扣除折扣金额入账吗
  • 公交补贴收入账务处理怎么做?
  • 转账支票遗失能挂失吗
  • 房屋所有权变更登记证书
  • 固定资产怎么盘点
  • 异地设立分公司可以独立核算吗
  • 代扣代缴企业所得税账务处理
  • 二甲醚增值税税率9%
  • 研发人员工资加计
  • 分支机构享受了税收优惠,是由总机构备案还是分支机构备案?
  • 哪些津贴免征个税
  • 增值税进项抵扣完了还上附加税吗
  • 股权转让收到钱会计分录
  • 银行年费计入管理费用还是财务费用
  • 凭证制单和审核可以是一个人吗
  • 小规模自开专票税率是1%还是3%
  • 代开专票时城建税一起扣了季报怎么报税
  • 进项税加计扣除申报表怎么填
  • 小规模补缴增值税怎么算
  • 净资产和净资本和营业收入
  • 招待费报销制度规定
  • php的强大功能函数库中都含有哪些常用函数?
  • php测试成功的邮件是什么
  • 支付的测试报告怎么查
  • linux模块的概念
  • 当前页面的脚本发生错误是否要在此页面上继续运行脚本
  • 企业职工工伤赔偿标准税前扣除
  • 增值税出口服务零税率
  • php yii框架
  • 如何发放年终奖 一个蒸蒸日上的公司,当
  • 租用办公设备
  • 承包租赁
  • 应付职工薪酬是负债吗
  • 企业工资薪金和职工福利费等支出税前扣除问题的公告
  • 应收票据终止确认的情形
  • 二手房买卖要交契税吗
  • 利润表项目本期怎么算
  • 借款费用开始资本化应满足的条件不包括
  • vuemvvm模式
  • 多缴纳的社保怎么查询
  • php 时间
  • 为什么很多公司选择股票上市
  • 每个公司都要交五险一金吗
  • 公司签发银行承兑汇票的行为属于什么
  • 其他应收款如何平账
  • 签三方协议需要法人本人去吗
  • 开票资料更改
  • 印花税减免优惠政策2019
  • 详解增发万亿国债细节
  • 使用sql server查询不到会返回什么
  • 计划成本核算的实际成本怎么算
  • 企业特殊工种不备案可以补报备吗
  • 已认证被作废发什么短信
  • 餐饮赠送的菜品需要缴税吗
  • 承兑汇票贴现利息会计分录
  • 投资性房地产在建
  • 企业会计准则季度利润表本期数
  • 企业购置软件的会计处理
  • 购买方账务处理
  • 累计折旧余额在哪方
  • 新成立的公司需要年报吗
  • cmd命令行窗口快捷键
  • Windows10 64位安装MySQL5.6.35的图文教程
  • 如何删除win10系统
  • win2000安全模式怎么进
  • windowsxp打开注册表
  • linux系统磁盘管理的主要内容
  • VirtualBox安装64位系统报错的处理方法
  • win7系统连接打印机没有反应
  • win10组策略编辑器没有
  • ES6 javascript中class类的get与set用法实例分析
  • cocos2dx屏幕适配解决方案
  • jquery怎么判断复选框选中
  • python相乘
  • javascript产生随机数
  • 上饶税务局电话号码
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设