three.js从入门到精通系列教程008 - three.js渲染器之SVG渲染器和WebGL渲染器
·
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>three.js从入门到精通系列教程008 - three.js渲染器之SVG渲染器和WebGL渲染器</title>
<script src="ThreeJS/three.js"></script>
<script src="ThreeJS/jquery.js"></script>
<script src="ThreeJS/Projector.js"></script>
<script src="ThreeJS/SVGRenderer.js"></script>
</head>
<body>
<p><button id="myButton1">启用SVG渲染器</button>
<button id="myButton2">启用WebGL渲染器</button>
</p>
<center id="myContainer"></center>
<script>
var isSVGRenderer = true;
//创建渲染器myRenderer1
var myRenderer1 = new THREE.SVGRenderer();
myRenderer1.setSize(window.innerWidth / 2, window.innerHeight / 2);
//创建渲染器myRenderer2
var myRenderer2 = new THREE.WebGLRenderer({ antialias: true });
myRenderer2.setSize(window.innerWidth / 2, window.innerHeight / 2);
var myCamera = new THREE.PerspectiveCamera(45,
window.innerWidth / window.innerHeight, 0.1, 1000);
myCamera.position.z = 4;
var myScene = new THREE.Scene();
myScene.background = new THREE.Color(0xffffff);
//创建图形
var myVertices = [];
for (var i = 0; i <= 150; i++) {
var v = (i / 150) * (Math.PI * 2);
var x = Math.sin(v);
var z = Math.cos(v);
myVertices.push(x, 0, z);
}
var myGeometry = new THREE.BufferGeometry();
myGeometry.setAttribute('position',
new THREE.Float32BufferAttribute(myVertices, 3));
for (var i = 1; i <= 3; i++) {
var myMaterial = new THREE.LineBasicMaterial({
color: Math.random() * 0xffffff,
linewidth: 20
});
var myLine = new THREE.Line(myGeometry, myMaterial);
myLine.scale.setScalar(i / 3);
myScene.add(myLine);
}
//渲染图形
animate();
function animate() {
var myOffset = 0;
var myTime = performance.now() / 1000;
myScene.traverse(function (child) {
child.rotation.x = myOffset + (myTime / 3);
child.rotation.z = myOffset + (myTime / 4);
myOffset++;
});
var myRenderer = myRenderer1;
$("#myContainer").html('');
if (isSVGRenderer) { myRenderer = myRenderer1; }
else { myRenderer = myRenderer2; }
$("#myContainer").append(myRenderer.domElement);
myRenderer.render(myScene, myCamera);
requestAnimationFrame(animate);
}
//响应单击“启用SVG渲染器”按钮
$("#myButton1").click(function () {
isSVGRenderer = true;
});
//响应单击“启用WebGL渲染器”按钮
$("#myButton2").click(function () {
isSVGRenderer = false;
});
</script>
</body>
</html>

更多推荐
所有评论(0)