Three.js利用性能插件stats实现性能监听的方法
发布时间 - 2026-01-11 03:23:59 点击率:次前言

关于性能:测试一个程序,性能上是否有瓶颈,在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
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何快速重置建站主机并恢复默认配置?
Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程
Java解压缩zip - 解压缩多个文件或文件夹实例
奇安信“盘古石”团队突破 iOS 26.1 提权
Laravel如何与Pusher实现实时通信?(WebSocket示例)
Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧
如何在Tomcat中配置并部署网站项目?
如何用已有域名快速搭建网站?
,怎么在广州志愿者网站注册?
Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧
如何在万网主机上快速搭建网站?
历史网站制作软件,华为如何找回被删除的网站?
免费网站制作appp,免费制作app哪个平台好?
瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口
如何获取上海专业网站定制建站电话?
Bootstrap整体框架之CSS12栅格系统
Laravel如何实现API版本控制_Laravel版本化API设计方案
韩国服务器如何优化跨境访问实现高效连接?
Laravel如何实现多对多模型关联?(Eloquent教程)
太平洋网站制作公司,网络用语太平洋是什么意思?
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
微信小程序 五星评分(包括半颗星评分)实例代码
javascript基本数据类型及类型检测常用方法小结
如何在阿里云ECS服务器部署织梦CMS网站?
七夕网站制作视频,七夕大促活动怎么报名?
如何使用 jQuery 正确渲染 Instagram 风格的标签列表
Laravel Admin后台管理框架推荐_Laravel快速开发后台工具
Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理
做企业网站制作流程,企业网站制作基本流程有哪些?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
简历没回改:利用AI润色让你的文字更专业
如何在IIS7中新建站点?详细步骤解析
laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法
如何在腾讯云服务器快速搭建个人网站?
javascript如何操作浏览器历史记录_怎样实现无刷新导航
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
linux top下的 minerd 木马清除方法
Android Socket接口实现即时通讯实例代码
nginx修改上传文件大小限制的方法
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
如何快速查询网站的真实建站时间?
Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】
简单实现jsp分页
Bootstrap整体框架之JavaScript插件架构
如何在七牛云存储上搭建网站并设置自定义域名?
php 三元运算符实例详细介绍
想要更高端的建设网站,这些原则一定要坚持!
昵图网官网入口 昵图网素材平台官方入口
如何在阿里云购买域名并搭建网站?
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?

