使用clientWidth / clientHeight Javascript和webgl会返回问题

时间:2015-02-16 07:53:46

标签: javascript webgl

我使用document.getElementById('myid').clientWidth.clientHeight表示高度)来获取div元素的宽度和高度,以设置容器变量的宽度和高度,我希望我的Webgl图形完成。

将值添加到标签以进行测试我能够获得元素宽度和高度的正确值,然后将这些值添加到宽度和高度,我能够使一切正常工作。

当我直接将语句document.getElementById('myid').clientWidth添加到width变量时出现问题。当我这样做时,我得到了错误的结果。有什么帮助吗?

以下是一些代码:

var clientWidth = document.getElementById('webgl').clientWidth;
var clientHeight = document.getElementById('webgl').clientHeight;

var container = document.getElementById('webgl');
var width = clientWidth, height =clientHeight;

var renderer = new THREE.WebGLRenderer({alpha: (option.bgcolor === undefined)});
 renderer.setSize(width, height);
 renderer.setClearColor(option.bgcolor || 0, (option.bgcolor === undefined) ? 0 : 1);

 // camera and controls
var camera = new THREE.PerspectiveCamera(45, width / height, 0.1, 1000);
camera.position.set(0, 0, 50);

1 个答案:

答案 0 :(得分:0)

这可能是因为three.js不尊重您的widthheight设置,而是在幕后执行 magic :(

要解决此问题,请使用版本r70 +,删除魔法的某些

另外,将您的电话改为

renderer.setSize(width, height);

renderer.setSize(width, height, false);

告诉three.js不要弄乱画布的CSS。

这是three.js的持续问题。 Three.js试图为你神奇地处理devicePixelRatio问题,但事实证明这几乎是不可能的。这是一些问题。

562759086027