前言

关于性能:测试一个程序,性能上是否有瓶颈,在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
相关文章:
建站之星如何快速生成多端适配网站?
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
网站制作说明怎么写,简述网页设计的流程并说明原因?
如何挑选最适合建站的高性能VPS主机?
如何获取开源自助建站系统免费下载链接?
如何快速搭建FTP站点实现文件共享?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
如何在阿里云购买域名并搭建网站?
娃派WAP自助建站:免费模板+移动优化,快速打造专业网站
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?
如何使用Golang安装API文档生成工具_快速生成接口文档
网站制作企业,网站的banner和导航栏是指什么?
常州自助建站:操作简便模板丰富,企业个人快速搭建网站
无锡营销型网站制作公司,无锡网选车牌流程?
如何快速打造个性化非模板自助建站?
如何用PHP快速搭建高效网站?分步指南
建站主机系统SEO优化与智能配置核心关键词操作指南
制作网站的模板软件,网站怎么建设?
官网网站制作腾讯审核要多久,联想路由器newifi官网
浅谈Javascript中的Label语句
如何在宝塔面板中修改默认建站目录?
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
建站之星好吗?新手能否轻松上手建站?
建站之星如何快速更换网站模板?
建站之星代理费用多少?最新价格详情介绍
山东云建站价格为何差异显著?
广东专业制作网站有哪些,广东省能源集团有限公司官网?
如何在阿里云通过域名搭建网站?
设计网站制作公司有哪些,制作网页教程?
SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?
c# await 一个已经完成的Task会发生什么
c++ stringstream用法详解_c++字符串与数字转换利器
如何通过服务器快速搭建网站?完整步骤解析
一键制作网站软件下载安装,一键自动采集网页文档制作步骤?
制作门户网站的参考文献在哪,小说网站怎么建立?
定制建站流程步骤详解:一站式方案设计与开发指南
建站VPS配置与SEO优化指南:关键词排名提升策略
实惠建站价格推荐:2025年高性价比自助建站套餐解析
如何用花生壳三步快速搭建专属网站?
如何自定义建站之星网站的导航菜单样式?
如何选择最佳自助建站系统?快速指南解析优劣
高端建站如何打造兼具美学与转化的品牌官网?
宝塔新建站点报错如何解决?
Android自定义listview布局实现上拉加载下拉刷新功能
如何撰写建站申请书?关键要点有哪些?
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
*请认真填写需求信息,我们会在24小时内与您取得联系。