Ahora mismo estoy trabajando en un juego en línea y he decidido usar el lienzo webgl en lugar del HTML5 por motivos de rendimiento. Estoy usando el framework three.js y mi intención es tener sprites animados en movimiento. Los sprites mismos se colocan en hojas de spritesheets y utilizo UVOffset y UVScale para usar el arte correcto y cambiar el arte de Sprite con el paso del tiempo. Me preguntaba si hay alguna manera de mejorar el rendimiento de este código, porque ahora mismo comienza a disminuir la velocidad en alrededor de 300 "jugadores" en el campo al mismo tiempo.Mejorando el rendimiento de los sprites animados en three.js
Saludos
La siguiente es la parte más importante de mi código:
var image = THREE.ImageUtils.loadTexture("img/idlew.png");
function addPlayer(){
var mesh = new THREE.Sprite({map:image});//, affectedByDistance: false, useScreenCoordinates: false});
images.push(mesh);
mesh.position.set(Math.floor(Math.random() * 500), Math.floor(Math.random() * 500), 10);
scene.add(mesh);
mesh.uvScale.x = 96/1152;
mesh.scale.x = 0.1;
mesh.scale.y = 0.1;
}
var imgBackground = new THREE.MeshLambertMaterial({
map:THREE.ImageUtils.loadTexture('img/grass.jpg')
});
var background = new THREE.Mesh(new THREE.PlaneGeometry(1000, 1000),imgBackground);
scene.add(background);
scene.add(camera);
camera.rotation.x = -(Math.PI/2);
scene.add(new THREE.AmbientLight(0xFFFFFF));
addPlayer();
renderer.render(scene, camera);
var moveUp = false;
tick();
var ticker = 0;
var usedOne = 0;
function tick(){
ticker++;
if(ticker%10==0){
for (var i = 0; i < images.length; i++) {
images[i].uvOffset.x = usedOne * 0.0835;
};
usedOne++;
if(usedOne == 12) usedOne = 0;
addPlayer();
addPlayer();
addPlayer();
console.log(images.length);
}
requestAnimationFrame(tick);
renderer.render(scene, camera);
}
¡Bienvenido a Stack Overflow, y me alegro de haber resuelto el problema! Entonces, ya sabe, es perfectamente aceptable responder a su propia pregunta en la sección de respuestas a continuación y (después de un breve período de espera) marcarla como la respuesta aceptada. Esto ayuda a otras personas que podrían encontrarse con el mismo problema en el futuro a encontrar la solución más rápido. – Toji