In questo momento sto lavorando a un gioco online e ho deciso di utilizzare Webgl anziché la tela HTML5 per motivi di prestazioni. Sto usando il framework three.js e la mia intenzione è di spostare gli sprite animati. Gli sprite stessi sono posizionati su spritesheet e io uso UVOffset e UVScale per usare l'arte giusta e cambiare l'arte dello Sprite durante il tempo che passa. Mi chiedevo se c'è un modo per migliorare le prestazioni di questo codice, perché in questo momento inizia a rallentare a circa 300 "giocatori" sul campo allo stesso tempo.Miglioramento delle prestazioni degli sprite animati in three.js
saluti
Di seguito è la parte più importante del mio codice:
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);
}
Benvenuto in Stack Overflow e felice di aver risolto il problema! Quindi, sai, è perfettamente accettabile rispondere alla tua stessa domanda nella sezione risposte qui sotto e (dopo un breve periodo di attesa) contrassegnarla come risposta accettata. Questo aiuta altre persone che potrebbero incontrare lo stesso problema in futuro a trovare la soluzione più velocemente. – Toji