Hiện tại tôi đang làm việc trên một trò chơi trực tuyến và đã quyết định sử dụng webgl thay vì canvas của HTML5 vì lý do hiệu suất. Tôi đang sử dụng khung công tác ba.js và ý định của tôi là di chuyển các hình động. Các sprites mình được đặt trên spritesheets và tôi sử dụng UVOffset và UVScale để sử dụng nghệ thuật phù hợp và chuyển đổi nghệ thuật của Sprite trong thời gian trôi qua. Tôi đã tự hỏi liệu có một cách để cải thiện hiệu suất của mã này, bởi vì ngay bây giờ nó bắt đầu chậm lại ở khoảng 300 "người chơi" trên sân cùng một lúc.Cải thiện hiệu suất của các hình động trong ba.js
Trân
Sau đây là phần quan trọng nhất của mã của tôi:
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);
}
Chào mừng bạn đến với Stack Overflow và vui mừng vì bạn đã sắp xếp sự cố! Vì vậy, bạn biết đấy, nó hoàn toàn chấp nhận được để trả lời câu hỏi của riêng bạn trong phần câu trả lời dưới đây và (sau một thời gian chờ đợi ngắn) đánh dấu nó như là câu trả lời được chấp nhận. Điều này giúp những người khác có thể gặp phải vấn đề tương tự trong tương lai tìm giải pháp nhanh hơn. – Toji