javascript - Three.js 示例未显示在 Canvas 上

标签 javascript html google-chrome canvas three.js

我找到了一个 Three.js 的例子,我正在尝试在 <canvas></canvas> 上实现它。元素。 我得到了对该元素的引用,但没有得到视觉效果。我的 Canvas 元素的 ID 为“mycanvas”。

<canvas id="mycanvas" style="border: 5px solid white" width="600" height="500"></canvas>

我在主体中使用了一个名为 WebGLStart() 的 onload 函数,它调用下面的脚本。

   <script>
        function WebGLStart()
        {
            //Get the canvas and the context
            var canvas = document.getElementById('mycanvas');
            var canvas_context = canvas.getContext("webgl");
            console.log("Canvas: "+canvas.width);
            console.log("Canvas: "+canvas.height);

            var RENDER_DIST = 1000,
                FOV = 75;

            var WIDTH = canvas.width,
                HEIGHT= canvas.height;

            var scene = new THREE.Scene();


            var camera = new THREE.PerspectiveCamera(FOV, WIDTH / HEIGHT, 0.1, RENDER_DIST);

            camera.position.z = 100;

            scene.add(camera);

            renderer = new THREE.WebGLRenderer();
            renderer.setSize(WIDTH,HEIGHT); 
            console.log("R info: "+renderer.info);

            canvas.appendChild(renderer.domElement);

            init();
            loopRun();

            function init() 
            {
                var geometry = new THREE.SphereGeometry(50); 
                var material = new THREE.MeshBasicMaterial({color: 0xff0000}); 
                var sphere = new THREE.Mesh(geometry, material); 
                scene.add(sphere);
            }

            function loopRun() 
            {
                requestAnimationFrame(loopRun);
                renderer.render(scene, camera);
            }
        }
    </script>

有什么原因导致这个不显示吗? 我在 chromes 提示上得到输出( Canvas 宽度和高度),但没有显示。任何想法将不胜感激

最佳答案

canvas 元素的子元素不可见。

为了解决这个问题,将渲染器 DOM 元素附加到其他一些 DOM 元素,例如文档正文。

如果您更改此行:

canvas.appendChild(renderer.domElement);

对此:

document.body.appendChild(renderer.domElement);

您将得到想要的结果。

关于javascript - Three.js 示例未显示在 Canvas 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27114087/

相关文章:

javascript - 解决 C 中的 javascript 计数器困境

html - 导航栏不会在 Bootstrap 3 中居中

javascript - 如何从 Google Chrome 打开 windows 浏览器?

css - :focus-visible? 的 chrome 问题(在正常鼠标焦点上显示焦点可见样式)

html - 尝试创建一个横跨整个页面的子菜单

jquery - 从控制台使用 jQuery 获取所有 anchor 元素?

javascript - 账户负天数

javascript - 使用变量时背景没有动画

javascript - 如何在 d3 饼图中添加漂亮的图例

javascript - 试图让我的网站得到回应