में एनिमेटेड स्प्राइट्स के प्रदर्शन में सुधार करना अभी मैं एक ऑनलाइन गेम पर काम कर रहा हूं और प्रदर्शन कारणों से HTML5 के कैनवास की बजाय वेबग्ल का उपयोग करने का निर्णय लिया है। मैं तीन.जेएस ढांचे का उपयोग कर रहा हूं और मेरा इरादा एनिमेटेड स्प्राइट्स ले जाना है। Sprites खुद spritesheets पर रखा जाता है और मैं सही कला का उपयोग करने के लिए यूवी ऑफसेट और यूवीस्केल का उपयोग करता हूं और समय बीतने के दौरान स्प्राइट की कला को स्विच करता हूं। मैं सोच रहा था कि इस कोड के प्रदर्शन में सुधार करने का कोई तरीका है, क्योंकि अभी यह एक ही समय में मैदान पर लगभग 300 "खिलाड़ियों" पर धीमा होना शुरू कर देता है।तीन.जेएस
सादर
के बाद मेरे कोड का सबसे महत्वपूर्ण हिस्सा है:
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);
}
स्टैक ओवरफ़्लो में आपका स्वागत है, और खुशी है कि आपने समस्या को हल किया है! तो आप जानते हैं, नीचे दिए गए उत्तर अनुभाग में अपने प्रश्न का उत्तर देने के लिए पूरी तरह से स्वीकार्य है और (एक संक्षिप्त प्रतीक्षा अवधि के बाद) इसे स्वीकार किए गए उत्तर के रूप में चिह्नित करें। यह उन अन्य लोगों की सहायता करता है जो भविष्य में एक ही मुद्दे में भाग ले सकते हैं, समाधान को तेजी से ढूंढें। – Toji