<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Three框架</title>
<script src="../static/three.js-master/build/three.js"></script>
<script src="../static/three.js-master/examples/js/libs/stats.min.js"></script> <style type="text/css">
div#canvas-frame {
border: none;
cursor: pointer;
width: 100%;
height: 600px;
background-color: #EEEEEE;
} </style>
<script>
var renderer; // 渲染器
var stats; // 性能监视器
function initThree() {
width = window.innerWidth;
height = window.innerHeight;
renderer = new THREE.WebGLRenderer({
antialias : true
});
renderer.setSize(width, height);
document.getElementById('canvas-frame').appendChild(renderer.domElement);
renderer.setClearColor(0xFFFFFF, 1.0); stats = new Stats(); // 创建一个性能监视器
stats.domElement.style.position = 'absolute'; // 样式, 坐标
stats.domElement.style.left = '0px';
stats.domElement.style.top = '0px';
document.getElementById('canvas-frame').appendChild(stats.domElement); // 添加到canvas-frame
} var camera; // 摄像机
function initCamera() {
camera = new THREE.PerspectiveCamera(45, width / height, 1, 10000);
camera.position.x = 0;
camera.position.y = 0;
camera.position.z = 800;
camera.up.x = 0;
camera.up.y = 1;
camera.up.z = 0;
camera.lookAt(0, 0, 0);
} var scene; // 场景
function initScene() {
scene = new THREE.Scene();
} var light; // 光线
function initLight() {
light = new THREE.AmbientLight(0xFF0000); // 环境光源
light.position.set(100, 100, 200);
scene.add(light);
light = new THREE.PointLight(0x00FF00); // 点光源
light.position.set(0, 0,300);
scene.add(light);
} var mesh; // 模型
function initObject() {
var geometry = new THREE.CylinderGeometry( 100,150,400); // 构造圆柱体
var material = new THREE.MeshLambertMaterial( { color:0xFFFFFF} ); // 构造表面
mesh = new THREE.Mesh( geometry,material); // 创建模型
mesh.position = new THREE.Vector3(0,0,0);
scene.add(mesh);
} function threeStart() {
initThree();
initCamera();
initScene();
initLight();
initObject();
animation(); }
function animation()
{
//renderer.clear();
//camera.position.x =camera.position.x +1;
mesh.position.x-=1;
renderer.render(scene, camera);
requestAnimationFrame(animation); stats.update(); // 调用stats.update()函数来统计时间和帧数
} </script>
</head> <body onload="threeStart();">
<div id="canvas-frame"></div>
</body>
</html>

性能监视器是three.js里面的一个类:

var stats = new Stats();
stats.setMode(1); // 0: fps, 1: ms
// 将stats的界面对应左上角
stats.domElement.style.position = 'absolute';
stats.domElement.style.left = '0px';
stats.domElement.style.top = '0px';
document.body.appendChild( stats.domElement );
setInterval( function () {
stats.begin();
// 你的每一帧的代码
stats.end();
}, 1000 / 60 );

1、setMode函数

参数为0的时候,表示显示的是FPS界面,参数为1的时候,表示显示的是MS界面。

2、stats的domElement

stats的domElement表示绘制的目的地(DOM),波形图就绘制在这上面。

3、stats的begin函数

begin,在你要测试的代码前面调用begin函数,在你代码执行完后调用end()函数,这样就能够统计出这段代码执行的平均帧数了。

附带three.js代码,点击下载

附带status.min.js代码,点击下载

最新文章

  1. JavaScript高级程序设计学习笔记--DOM
  2. github的使用步骤及体会
  3. 优先级反转实验,使用信号量实现【RT-Thread学习笔记 5】
  4. hdu 2647 Reward
  5. hdu 4901 The Romantic Hero (dp)
  6. [Spark內核] 第41课:Checkpoint彻底解密:Checkpoint的运行原理和源码实现彻底详解
  7. JAVA多线程之CountDownLatch
  8. 搭建ssm框架,可实现登录和数据展示以及增删改查
  9. 《白帽子讲Web安全》- 学习笔记
  10. docker 常用启动命令
  11. Git Extensions system.invalidoperationexception尚未提供文件名,因此无法启动进程
  12. 查看win10版本方法,及win10升级方法
  13. Spark学习:ShutdownHookManager虚拟机关闭钩子管理器
  14. (转)FIKKER和Nginx的反向代理服务功能对比评测报告
  15. webstorm激活
  16. InnoDB事务日志(redo log 和 undo log)详解
  17. OpenCV学习(10) 图像的腐蚀与膨胀(1)
  18. Android(java)学习笔记28:泛型概述和基本使用
  19. The 13th Zhejiang Provincial Collegiate Programming Contest - D
  20. day17 isinstance type issubclass 反射

热门文章

  1. YII框架中可以使用foreach遍历对象以及可以使用数组形式直接访问对象的原因
  2. Java内部类(4):静态内部类&amp;接口内部类
  3. jQuery,javascript获得网页的高度和宽度【收藏】
  4. 【VS开发】程序员对内存的理解
  5. #学习笔记:CentOS7学习之十三(2):磁盘介绍与管理
  6. SQL SERVER DATENAME函数
  7. Linux系列(7):入门之磁盘与文件系统管理
  8. Codeforces Round #574 (Div. 2)补题
  9. 从入门到自闭之Python--Django Rest_Framework
  10. [多平台]pymo – 手机上的 GalGame 引擎