就我而言,我想在地形上加上一些城市名稱的標籤。但是當我放置超過10個時,fps會減少很多。有沒有什麼辦法可以將Sprites合併爲Three.js中的幾何?
我跟着這裏寫的代碼http://stemkoski.github.io/Three.js/Sprite-Text-Labels.html
我的代碼是類似的東西:
var canvas = document.createElement('canvas');
var sizeCanvas = 250;
canvas.width = sizeCanvas;
canvas.height = sizeCanvas;
var context = canvas.getContext('2d');
context.font = "Bold " + size + "px " + font;
context.textAlign = 'center';
contexto.fillStyle = "rgba(10, 10, 10, 1.0)";
contexto.fillText(text, sizeCanvas/2, sizeCanvas/2);
var texture = new THREE.Texture(canvas);
texture.needsUpdate = true;
var labelMaterial = new THREE.SpriteMaterial(
{map: texture, useScreenCoordinates: false});
var label = new THREE.Sprite(labelMaterial);
label.position.x = this._vector.x;
label.position.y = this._vector.y;
label.position.z = this._vector.z;
etiqueta.scale.set(10, 10, 1.0);
scene.add(label);
我supose是合併精靈的主要問題是對diferent紋理每個標籤。
感謝您的建議!
你想讓你的城市標籤始終面對相機嗎? – gaitat
@gaitat確實如此。 – alexGrac
然後,你不能真正將所有的精靈合併爲一個。一個大精靈面對鏡頭的方式不同於單獨的小精靈。 – gaitat