全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Three.js利用性能插件stats实现性能监听的方法

前言

关于性能:测试一个程序,性能上是否有瓶颈,在3D世界里,经常使用帧数的概念,首先我们来定义一下帧数的意义。

帧数:图形处理器每秒钟能够刷新几次,通常用fps(Frames Per Second)来表示

关于性能:测试一个程序,性能上是否有瓶颈,在3D世界里,经常使用帧数的概念,首先我们来定义一下帧数的意义。

帧数:图形处理器每秒钟能够刷新几次,通常用fps(Frames Per Second)来表示

stats性能插件添加了以后,会默认在左上角显示性能帧数,每次刷新所用时间,占用内存。鼠标左键点击可进行切换,默认显示每秒的帧数。

   

首先需要将stats插件引入,地址是官网下载文件里面的examples/js/libs/stats.min.js。

然后需要实例化一个组件,然后添加到dom当中。

//初始化性能插件 
 var stats; 
 function initStats() { 
 stats = new Stats(); 
 document.body.appendChild(stats.dom); 
 } 

需要在requestAnimationFrame()函数调用里面更新stats。

function animate() { 
 //更新控制器 
 controls.update(); 
 render(); 
 
 //更新性能插件 
 stats.update(); 
 requestAnimationFrame(animate); 
 } 

就这样,页面当中就会显示出来正常插件效果了。

设置默认显示的监听。

Stats.prototype.setMode()方法可以设置插件的默认监听

stats.setMode(0); //默认的监听fps 
stats.setMode(1); //默认的监听画面渲染时间 
stats.setMode(2); //默认的监听当前的不知道是啥 

案例也是用的上一节的案例写的,全部代码:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
 <meta charset="UTF-8"> 
 <title>Title</title> 
 <style type="text/css"> 
 html, body { 
  margin: 0; 
  height: 100%; 
 } 
 
 canvas { 
  display: block; 
 } 
 
 </style> 
</head> 
<body onload="draw();"> 
 
</body> 
<script src="build/three.js"></script> 
<script src="examples/js/controls/TrackballControls.js"></script> 
<script src="examples/js/libs/stats.min.js"></script> 
<script> 
 var renderer; 
 function initRender() { 
 renderer = new THREE.WebGLRenderer({antialias:true}); 
 renderer.setSize(window.innerWidth, window.innerHeight); 
 document.body.appendChild(renderer.domElement); 
 } 
 
 var camera; 
 function initCamera() { 
 camera = new THREE.PerspectiveCamera(45, window.innerWidth/window.innerHeight, 1, 10000); 
 camera.position.set(0, 0, 400); 
 } 
 
 var scene; 
 function initScene() { 
 scene = new THREE.Scene(); 
 } 
 
 var light; 
 function initLight() { 
 scene.add(new THREE.AmbientLight(0x404040)); 
 
 light = new THREE.DirectionalLight(0xffffff); 
 light.position.set(1,1,1); 
 scene.add(light); 
 } 
 
 function initModel() { 
 var map = new THREE.TextureLoader().load("examples/textures/UV_Grid_Sm.jpg"); 
 var material = new THREE.MeshLambertMaterial({map:map}); 
 
 var cube = new THREE.Mesh(new THREE.BoxGeometry(100, 200, 100, 1, 1, 1), material); 
 scene.add(cube); 
 } 
 
 //初始化性能插件 
 var stats; 
 function initStats() { 
 stats = new Stats(); 
 document.body.appendChild(stats.dom); 
 } 
 
 //用户交互插件 鼠标左键按住旋转,右键按住平移,滚轮缩放 
 var controls; 
 function initControls() { 
 controls = new THREE.TrackballControls( camera ); 
 //旋转速度 
 controls.rotateSpeed = 5; 
 //变焦速度 
 controls.zoomSpeed = 3; 
 //平移速度 
 controls.panSpeed = 0.8; 
 //是否不变焦 
 controls.noZoom = false; 
 //是否不平移 
 controls.noPan = false; 
 //是否开启移动惯性 
 controls.staticMoving = false; 
 //动态阻尼系数 就是灵敏度 
 controls.dynamicDampingFactor = 0.3; 
 //未知,占时先保留 
 //controls.keys = [ 65, 83, 68 ]; 
 controls.addEventListener( 'change', render ); 
 } 
 
 function render() { 
 renderer.render( scene, camera ); 
 } 
 
 //窗口变动触发的函数 
 function onWindowResize() { 
 
 camera.aspect = window.innerWidth / window.innerHeight; 
 camera.updateProjectionMatrix(); 
 controls.handleResize(); 
 render(); 
 renderer.setSize( window.innerWidth, window.innerHeight ); 
 
 } 
 
 function animate() { 
 //更新控制器 
 controls.update(); 
 render(); 
 
 //更新性能插件 
 stats.update(); 
 requestAnimationFrame(animate); 
 } 
 
 function draw() { 
 initRender(); 
 initScene(); 
 initCamera(); 
 initLight(); 
 initModel(); 
 initControls(); 
 initStats(); 
 
 animate(); 
 window.onresize = onWindowResize; 
 } 
</script> 
</html> 

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。


# three.js  # stats  # three.js插件  # three  # Three.js基础学习之场景对象  # Three.js实现浏览器变动时进行自适应的方法  # Three.js利用dat.GUI如何简化试验流程详解  # 利用Three.js如何实现阴影效果实例代码  # Three.js实现绘制字体模型示例代码  # Three.js利用Detector.js插件如何实现兼容性检测详解  # Three.js利用orbit controls插件(轨道控制)控制模型交互动作详解  # Three.js如何用轨迹球插件(trackball)增加对模型的交互功能详解  # Three.js入门之hello world以及如何绘制线  # Three.js如何实现雾化效果示例代码  # 帧数  # 几次  # 变焦  # 鼠标左键  # 每秒钟  # 就会  # 右键  # 有一定  # 这篇文章  # 谢谢大家  # 官网  # 有疑问  # lang  # gt  # head  # en  # setMode  # html  # update  # render 


相关文章: ,制作一个手机app网站要多少钱?  如何在宝塔面板中修改默认建站目录?  如何用VPS主机快速搭建个人网站?  宝塔建站无法访问?如何排查配置与端口问题?  活动邀请函制作网站有哪些,活动邀请函文案?  如何在万网主机上快速搭建网站?  c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】  建站之星如何助力企业快速打造五合一网站?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  Android自定义listview布局实现上拉加载下拉刷新功能  制作网站的模板软件,网站怎么建设?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  建站主机SSH密钥生成步骤及常见问题解答?  装修招标网站设计制作流程,装修招标流程?  详解jQuery中基本的动画方法  在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?  网站制作软件有哪些,制图软件有哪些?  PHP正则匹配日期和时间(时间戳转换)的实例代码  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  小程序网站制作需要准备什么资料,如何制作小程序?  如何用PHP工具快速搭建高效网站?  如何通过虚拟主机空间快速建站?  建站ABC备案流程中有哪些关键注意事项?  宁波自助建站系统如何快速打造专业企业网站?  长沙做网站要多少钱,长沙国安网络怎么样?  如何用wdcp快速搭建高效网站?  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  linux top下的 minerd 木马清除方法  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  建站之星logo尺寸如何设置最合适?  新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?  济南企业网站制作公司,济南社保单位网上缴费步骤?  网页设计网站制作软件,microsoft office哪个可以创建网页?  专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  建站org新手必看:2024最新搭建流程与模板选择技巧  定制建站价位费用解析与套餐推荐全攻略  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  ,怎么用自己头像做动态表情包?  网站建设制作、微信公众号,公明人民医院怎么在网上预约?  郑州企业网站制作公司,郑州招聘网站有哪些?  如何在服务器上三步完成建站并提升流量?  如何选择适合PHP云建站的开源框架?  整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  ,在苏州找工作,上哪个网站比较好?  哈尔滨网站建设策划,哈尔滨电工证查询网站?  C++时间戳转换成日期时间的步骤和示例代码  网站制作报价单模板图片,小松挖机官方网站报价? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。