"threejs - Cloud exemple"(http://mrdoob.com/lab/javascript/webgl/clouds/)에서 영감을 얻은 웹 사이트 배경에 대한 webgl 애니메이션을 만들려고합니다. 내 컴퓨터에서는 오히려 좋은 것처럼 보입니다. 그러나 어떤 PC에서는 매우 느립니다.requestAnimationFrame()에도 불구하고 내 WebGL 애니메이션이 느립니다.
내 코드를 최적화하고 그래픽 카드가 webgl을 지원하지 않는지 감지 할 수 있습니까? (배경)
내 애니메이션 : http://wabeo.fr/?theme=auriga-7이
내 코드 :
var container = document.getElementById('container');
var wi = window.innerWidth;
var he = window.innerHeight;
var renderer = new THREE.WebGLRenderer({
antialias: true
});
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(75,wi/he,1,10000);
var distance = 500;
var geometry2 = new THREE.Geometry();
renderer.setSize(wi ,he);
container.appendChild(renderer.domElement);
scene.add(camera);
var texture = THREE.ImageUtils.loadTexture('/wp-content/themes/auriga-7/i/cloud.png');
texture.minFilter = THREE.LinearFilter;
texture.magFilter = THREE.LinearFilter;
var m = new THREE.MeshBasicMaterial({color:0x000000});
var material = new THREE.MeshBasicMaterial({ map: texture,transparent: true});
var plane = new THREE.PlaneGeometry(400,400,4,4);
for (ix = 0; ix <45; ix++) {
item = new THREE.Mesh(plane, m);
item.position.x = ((Math.random()-0.5)*(Math.random() * wi/2) /4)*Math.random()*10;
item.position.y = ((Math.random()-0.5)*(Math.random() * he/2) /4)*Math.random()*10;
item.position.z = ix*10-50;
item.rotation.z = Math.random() *250;
item.scale.x = item.scale.y = Math.random() * Math.random() * 2 + 0.5;
THREE.GeometryUtils.merge(geometry2,item);
}
mesh = new THREE.Mesh(geometry2, material);
scene.add(mesh);
camera.position.z = distance;
camera.lookAt(scene.position);
renderer.sortObjects = false;
// create a point light
var pointLight =
new THREE.PointLight(0xFFFFFF);
// set its position
pointLight.position.x = 10;
pointLight.position.y = 50;
pointLight.position.z = 130;
// add to the scene
scene.add(pointLight);
requestAnimationFrame(wanarender);
document.addEventListener('mousemove',onMouseMove, false);
window.addEventListener('resize',onResizeMyFuckinBrowser,false);
function onMouseMove(event){
var mouseX = event.clientX - wi/2;
var mouseY = event.clientY - he/2;
camera.position.x = (mouseX - camera.position.x) * 0.02;
camera.position.y = (-mouseY - camera.position.y) * 0.02;
camera.position.z = distance;
camera.lookAt(scene.position);
}
function onResizeMyFuckinBrowser(){
var wi = window.innerWidth;
var he = window.innerHeight;
renderer.setSize(wi ,he);
}
function wanarender(){
requestAnimationFrame(wanarender);
renderer.render(scene, camera);
}
나 자신을 three.js를 위해 새로운 해요
안녕하세요. 정확한 답을 표시하는 것을 고려하십시오. 이 사이트의 사람들은 종종 질문에 대답하는 데 상당한 시간을 할애하고 올바른 대답을 표시하는 것이 좋습니다. 또한 사람들에게 최상의 정보를 제공함으로써 사이트를 개선하는 데 도움이됩니다. 감사. – null