Three.js 性能监测工具 Stats.js

目录

前言 

性能监控 

引入 Stats

使用Stats

代码


 

前言 

通过stats.js库可以查看three.js当前的渲染性能,具体说就是计算three.js的渲染帧率(FPS),所谓渲染帧率(FPS),简单说就是three.js每秒钟完成的渲染次数,一般渲染达到每秒钟60次为最佳状态。

性能监控 

github 地址: https://github.com/mrdoob/stats.js/blob/master/src/Stats.js

  • FPS 在最近一秒渲染的帧数量。数值越高,性能越好.

  • MS 渲染帧所需的毫秒数。数值越低,性能越好.

  • MB 占用的内存大小

引入 Stats

import Stats from 'three/examples/jsm/libs/stats.module.js

使用Stats

要使用 Stats 需要做以下几步操作:

  1. 实例化 Stats
  2. 设置初始面板 stats.setMode(0) 。传入面板id(0: fps1: ms2: mb
  3. 设置监视器的位置
  4. 将监视器添加到页面中
  5. 刷新帧数 stats.update()

 

// 创建性能监视器
let stats = new Stats()// 设置监视器面板,传入面板id(0: fps, 1: ms, 2: mb)
stats.setMode(0)// 设置监视器位置
stats.domElement.style.position = 'absolute'
stats.domElement.style.left = '0px'
stats.domElement.style.top = '0px'// 将监视器添加到页面中
document.body.appendChild(stats.domElement)function render() {// 更新帧数stats.update()// 渲染界面renderer.render(scene, camera)requestAnimationFrame(render)
}render()

点击该面板时还可以切换监听的类型

设置初始展示类型的另一个方法

除了使用 setMode 设置初始展示的类型外,还可以使用 showPanel 设置。比如设置初始展示的类型是 ms ,就传个 1 进去即可。

stats.showPanel(1)

代码

<script type="module">import * as THREE from '../js/Three/src/Three.js' // 引入 Threeimport Stats from '../js/Three/examples/jsm/libs/stats.module.js' // 引入 Stats// 创建场景const scene = new THREE.Scene()// 创建相机(类似人的眼睛,可以看到东西)// 创建透视相机const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000)// 设置相机对象的位置// 分别传入 x y z 轴的坐标camera.position.set(10, 10, 10)camera.lookAt(scene.position)// 将相机添加到场景中scene.add(camera)// 创建几何体const cubeGeometry = new THREE.BoxGeometry(1, 1, 1)// 设置几何体材质const cubeMaterial = new THREE.MeshBasicMaterial({color: 0xffff00})// 根据几何体和材质创建物体const cube = new THREE.Mesh(cubeGeometry, cubeMaterial)// 将几何体添加到场景中scene.add(cube)// 初始化渲染器const renderer = new THREE.WebGLRenderer()// 设置渲染的尺寸大小renderer.setSize(window.innerWidth, window.innerHeight)// 把渲染器添加到body里// 将 webgl 渲染的 canvas 内容添加到 bodydocument.body.appendChild(renderer.domElement)// 创建性能监视器let stats = new Stats()// 设置监视器面板,传入面板id(0: fps, 1: ms, 2: mb)stats.setMode(0)// 设置监视器位置stats.domElement.style.position = 'absolute'stats.domElement.style.left = '0px'stats.domElement.style.top = '0px'// 将监视器添加到页面中document.body.appendChild(stats.domElement)function render() {// 更新帧率stats.update()cube.rotation.x += 0.01cube.rotation.y += 0.01cube.rotation.z += 0.01renderer.render(scene, camera)requestAnimationFrame(render)}render()
</script>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/845588.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sqlite--SQL语句进阶

SQL语句进阶 函数和聚合 函数&#xff1a; SQL 语句支持利用函数来处理数据&#xff0c; 函数一般是在数据上执行的&#xff0c; 它给数据的转换和处理提供了方便常用的文本处理函数&#xff1a; 常用的文本处理函数&#xff1a; // 返回字符串的长度 length();//将字符串…

LeetCode42:接雨水

题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 代码 单调栈 class Solution { public:int trap(vector<int>& height) {stack<int> stk;int result 0;stk.push(0);for (int …

MoeCTF 2022 usb

直接找 URB的第一个输入协议 我们需要提取的数据 HID Data 提取过滤器 tshark -r usb.pcapng -Y "usb.src\"2.2.1\"" -T json >1.json 拿 usbhid.data 字段 tshark -r usb.pcapng -Y "usb.src\"2.2.1\"" -T json -e usbhid.data …

如何在window是安装mysql数据库(从零开始)

mysql简介&#xff1a; MySQL是一种开源的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它是目前世界上最流行的数据库之一。MySQL最初由瑞典的MySQL AB公司开发&#xff0c;后来被Sun Microsystems收购&#xff0c;而后Sun Microsystems又被Oracle收购。My…

WPF 依赖属性原理、 附加属性

依赖属性如何节约内存 MSDN中给出了下面几种应用依赖属性的场景&#xff1a; 希望可在样式中设置属性。 希望属性支持数据绑定。 希望可使用动态资源引用设置属性。 希望从元素树中的父元素自动继承属性值。 希望属性可进行动画处理。 希望属性系统在属性系统、环境或用户…

离线数仓之MaxCompute

官方文档 简介 MaxCompute&#xff08;原名ODPS&#xff0c;Open Data Processing Service&#xff09;是一种典型的离线数仓解决方案。它是由阿里巴巴集团自主研发的大数据计算和存储平台&#xff0c;旨在支持大规模数据处理和分析。对于实时数据处理&#xff0c;MaxCompute…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-24.3,4 SPI驱动实验-I.MX6U SPI 寄存器

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

【小白专用 已验证24.5.30】ThinkPHP6 视图

ThinkPHP6 视图 模板引擎支持普通标签和XML标签方式两种标签定义&#xff0c;分别用于不同的目的 标签类型描述普通标签主要用于输出变量、函数过滤和做一些基本的运算操作XML标签也称为标签库标签&#xff0c;主要完成一些逻辑判断、控制和循环输出&#xff0c;并且可扩展 c…

Vue:现代前端开发的首选框架-【基础篇】

引言 在众多前端框架中&#xff0c;Vue.js 以其独特的优势脱颖而出&#xff0c;成为现代前端开发的首选框架之一。本文将首先介绍 Vue.js 的优势&#xff0c;随后详细讲解如何搭建 Vue.js 开发环境&#xff0c;并深入探讨 Vue.js 的核心概念。 Vue.js 的优势 选择 Vue.js 作…

SpringBoot整合Shiro流程

1.pom.xml导入shiro相关jar包 <dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-spring</artifactId><version>1.4.0</version> </dependency> <dependency><groupId>org.apache.shiro</gr…

注意力可视化代码

读取网络层输出的特征到txt文件&#xff0c;arr为文件名 def hot(self, feature, arr):# 在第二维&#xff08;通道维&#xff09;上相加summed_tensor torch.sum(feature, dim1, keepdimTrue) # 结果形状为 [1, 1, 64, 64]selected_matrix summed_tensor.squeeze(1) # 移除…

牛客小白月赛95

c相助 题目描述 此题为E题的easy版&#xff0c;只有aia_iai​的数据范围不同。 给你一个 nnn 个正整数组成的数组 a &#xff0c;你每次操作可以选择一对 (i,j)( i, j )(i,j)&#xff0c;满足 1≤i<j≤n1 \leq i < j \leq n1≤i<j≤n&#xff0c;且 aiaja_{i} a_{…

三丰云免费服务器

三丰云网址&#xff1a; https://www.sanfengyun.com 可申请免费云服务器&#xff0c;1核/1G内存/5M宽带/有公网IP/10G SSD硬盘/免备案。 收费云服务器&#xff0c;买2年送1年&#xff0c;有很多优惠

Lombok一文通

1、Lombok简介 作为java的忠实粉丝&#xff0c;但也不得不承认&#xff0c;java是一门比较啰嗦的语言&#xff0c;很多代码的编写远不如其他静态语言方便&#xff0c;更别说跟脚本语言比较了。 因此&#xff0c;lombok应运而生。 Lombok是一种工具库&#xff0c;它提供了一组…

msf攻击windows实例

环境&#xff1a;攻击机kali&#xff08;192.168.129.139&#xff09;&#xff0c;目标机windows10&#xff08;192.168.129.132&#xff09; 方法一&#xff1a;通过web站点&#xff0c;使用无文件的方式攻击利用执行&#xff08;命令执行漏洞&#xff09; 方法二&#xff1…

迪文 51单片机,全局变量、静态变量初始化失败,修正

1. 问题 51单片机全局变量常量的初始化&#xff0c;static code const函数内部静态变量初始化也失败&#xff0c;例如 void fun() {static int a 5;printf("a %d\n", a); //输入的不一定是5&#xff0c;是之前这个地址的值&#xff08;随机值&#xff09; }2. 解决…

Lua两个点号连接字符串

在Lua中&#xff0c;两个点号 .. 代表字符串连接操作符。当你想要将两个或多个字符串拼接在一起时&#xff0c;可以使用这个操作符。 以下是使用 .. 操作符的一些示例&#xff1a; local str1 "Hello, " local str2 "World!" local result str1 .. str2…

提示工程(Prompt Engineering)和代码生成

文心一言 提示工程&#xff08;Prompt Engineering&#xff09;和代码生成之间的关系主要体现在如何通过精心设计的提示来指导或优化代码生成的过程。以下是关于提示工程和代码生成的详细解释&#xff1a; 一、提示工程&#xff08;Prompt Engineering&#xff09; 提示工程…

路径操作函数

System.SysUtils.AnsiCompareFileName 根据当前语言环境比较文件名。 在 Windows 下不区分大小写&#xff0c;在 MAC OS 下区分大小写。 在不使用多字节字符集 (MBCS) 的 Windows 区域设置下&#xff0c;AnsiCompareFileName 与 AnsiCompareText 相同。在 MAC OS 和 Linux 下&…

KotlinConf 2024:深入了解Kotlin Multiplatform (KMP)

KotlinConf 2024&#xff1a;深入了解Kotlin Multiplatform (KMP) 在近期的Google I/O大会上&#xff0c;我们推荐了Kotlin Multiplatform (KMP)用于跨移动、网页、服务器和桌面平台共享业务逻辑&#xff0c;并在Google Workspace中采用了KMP。紧接着&#xff0c;KotlinConf 2…