我正在用Babylon.js制作一个场景,它利用了canvas元素。我也希望文本出现在这个画布上,因为它被设置为占据整个页面。我尝试过这样做,它在没有Babylon.js的情况下也可以工作,但每当我将它与Babylon.js放在一起时,文本要么看不见,要么只显示文本,而不显示Babylon.js。我听说把一幅画布画放在前面的唯一方法是在它后面的元素之后编码它,但由于某种原因,这种方法不起作用。代码如下:
window.addEventListener('DOMContentLoaded', function(){
var canvas = document.getElementById('renderCanvas');
var engine = new BABYLON.Engine(canvas, true);
var createScene = function(){
var scene = new BABYLON.Scene(engine);
var camera = new BABYLON.UniversalCamera('camera1', new BABYLON.Vector3(0, 5,-10), scene);
camera.setTarget(BABYLON.Vector3.Zero());
camera.attachControl(canvas, true);
var light = new BABYLON.HemisphericLight('light1', new BABYLON.Vector3(0,1,0), scene);
var sphere = BABYLON.Mesh.CreateSphere('sphere1', 16, 2, scene);
sphere.position.y = 1;
var ground = BABYLON.Mesh.CreateGround('ground1', 100, 100, 100, scene);
scene.gravity = new BABYLON.Vector3(0, -9.81, 0);
camera.ellipsoid = new BABYLON.Vector3(1, 1, 1);
scene.collisionsEnabled = true;
camera.checkCollisions = true;
ground.checkCollisions = true;
sphere.checkCollisions = true;
camera.applyGravity = true;
}
var scene = createScene();
engine.runRenderLoop(function(){
scene.render();
});
window.addEventListener('resize', function(){
engine.resize();
});
});
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.font = "67px Arial";
ctx.fillText("TEST", 10, 50);发布于 2020-06-20 23:52:18
答:使用HTML作为在JS中显示文本的一种方式被证明有点多余。当进一步研究Babylon.js文档时,我发现BabylonJS库有一个内置的图形用户界面元素,可以用来显示文本。如果你想做同样的事情,你可以通过Here is the link找到它。
https://stackoverflow.com/questions/62434820
复制相似问题