加载中…
个人资料
赖平
赖平
  • 博客等级:
  • 博客积分:0
  • 博客访问:2,279
  • 关注人气:5
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Three.js中WebGLRenderer和CanvasRenderer对比

(2014-01-09 03:22:06)
标签:

webgl

three.js

webglrenderer

canvasrenderer

网页三维

分类: WebGL

 声明:该文章来源于网络。本人只是节选一部分作为参考。




charset=utf-8 />
webgl2

#webgl{
background: #ccc;
width: 800px;
height: 600px;
}

src="Three.js" type="text/javascript">
type="text/javascript">
var renderer;//声明一个全局变量

function initThree() {
width = document.getElementById('webgl').clientWidth;
height = document.getElementById('webgl').clientHeight;
renderer = new THREE.WebGLRenderer({antialias:true});//生成渲染器对象,属性:锯齿效果设为true
renderer.setSize(width,height);//设置渲染器的宽和高,和画布大小一致
document.getElementById('webgl').a(renderer.domElement);//追加canvas元素到webgl元素当中
renderer.setClearColorHex(0xFFFFFF,1.0);//设置渲染器的清除色
}

var camera;
function initCamera() {
camera = new THREE.PerspectiveCamera(45,width/height,1,10000);
//此处为设置透视投影的相机,默认情况下,相机的上方向为Y轴,右方向为X轴,沿着Z轴垂直朝里(视野角:fov 纵横比:aspect 相机离视最近的距离:near 相机离视体积最远距离:far
camera.position.x = 400;//设置相机的位置坐标
camera.position.y = 0;
camera.position.z = 0;
//设置相机的上为y轴方向
camera.up.x = 0;
camera.up.y = 1;
camera.up.z = 0;
}

var scene;
function initScene() {
scene = new THREE.Scene();
}

var light;
function initLight() {
light = new THREE.DirectionalLight(0x0000FF,1.0,0);//设置平行光DirectionalLight
light.position.set(50,50,50);//光源向量,即光源的位置
scene.add(light);//追加光源到场景
}


var cube=Array();
function initObject() {
for(var i=0;i<</span>4;i++){
cube[i]=new THREE.Mesh(//meshthree.js的一个类
new THREE.CubeGeometry(50,50,50),//形状 (宽 深度)
new THREE.MeshLambertMaterial({color:0x0000FF})//材质
);
scene.add(cube[i]);
cube[i].position.set(0,-120+80*i,0);
}
}

var t=0;
function loop(){
t++;
renderer.clear();
cube[0].rotation.set(t/100,0,0);
cube[1].rotation.set(0,t/100,0);
cube[2].rotation.set(0,0,t/100);
camera.lookAt( {x:0, y:0, z:0 } );
renderer.render(scene,camera);
window.requestAnimationFrame(loop);
}

function threeStart() {
initThree();
initCamera();
initScene();
initLight();
initObject();
loop();
renderer.clear();
renderer.render(scene,camera);
}



onload="threeStart();">
id="webgl">




其中代码renderer=new THREE.WebGLRenderer();为渲染器代码现在讲代码替换为:

renderer=new THREE.CanvasRenderer();

有如下效果:

http://s16/bmiddle/003aybmLgy6FDROqKSzdf&690  

        WebGLRenderer渲染结果               CanvasRenderer渲染结果

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有