【发布时间】:2015-04-17 22:51:42
【问题描述】:
我有一个使用 three.js 来绘制多个 webgl 图层的 web 应用程序,我有时会(在 Chrome 中)获取具有不等于画布高度和宽度的绘图缓冲区高度和绘图缓冲区宽度的图层。
每一层都可以打开和关闭。我有一叠它们,所以它们可以重复使用:
Layers.GLRendererPool = new (function() {
this.renderers = [];
this.getRenderer = function() {
if(this.renderers.length == 0) {
var r = new THREE.WebGLRenderer({ alpha: true });
r.setClearColor(0x000000, 0);
return r;
} else {
var r = this.renderers.shift();
return r;
}
};
this.saveRenderer = function(r) {
r.setSize(0, 0); //EXPERIMENTAL
this.renderers.push(r);
};
return this;
})();
在使用 THREE.WebGLRenderer.setSize() 获取它们后调整它们的大小。调用 setSize() 后,canvas.width == renderer.context.drawingBufferWidth 和 canvas.height == renderer.context.drawingBufferHeight,但并非总是如此。即使我目前只使用 1 个渲染器,它们也不相等。
任何想法为什么会发生这种情况?我假设视频卡内存有一些限制,我尝试在每个未使用的渲染器上调用 setSize(0, 0),但没有运气。这是 Chrome + WebGL 的错误吗?
【问题讨论】: