用于WebGL渲染器的canvas元素的three.js dom id

11

我想自动获取由three.js创建的canvas元素的id。

或者,在构建过程中,我同样希望能够传递现有的canvas元素id,这样做也许会更加令人满意。

研究后,我尝试了以下方法:

renderer = new THREE.WebGLRenderer( { canvas: my_canvas } );

没有成功(它来自一个相当旧的版本,但我希望它能正常工作)。也许自两年前以来,一些参数语法已经改变了?

(my_canvas是画布的id,我还尝试传递上下文,但没有成功)

最后我试了:

document.getElementsByTagName('canvas');

没有任何返回结果......这真是个难题,也是我在这里发帖的导火索。

非常感谢您提供任何见解!(现在我有投票权)


3
使用 renderer.domElement 获取与渲染器创建的画布对应的 DOM 元素。 - Popov
1
此外,您可以将画布传递给WebGLRenderer,请参见此处:http://mrdoob.github.com/three.js/docs/57/#Reference/Renderers/WebGLRenderer => 根据文档(和源代码),似乎这就是您所做的,它应该可以工作。 - Popov
2个回答

28
var canvas = document.getElementById("canvasID");
renderer = new THREE.WebGLRenderer({ canvas: canvas });

4
如果你查看最新版本(r57)的three.js/src/renderers/WebGLRenderer.js(在文件的顶部),您可以看到您实际上可以将一个canvas参数传递给渲染器。如果您不传递参数,则会为您创建一个。您可能需要发布一些不起作用的代码,或者更好地使用jsfiddle,这样我们就可以查看问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接