我目前正在开发一个不断在canvas元素中将视频绘制到WebGL的应用程序。应用程序的一个要求是,在帧停止发送到渲染后,画布会立即隐藏display: none;
。如果我们决定向渲染器发送更多帧,则会使用display: block;
将画布带回视图。
我的问题是,在隐藏画布时,WebGL似乎没有完成渲染旧框架,导致在画布重新出现时看到旧框架正在赶上。
到目前为止,我唯一可行的发现是使用gl.clear
,如下所示。
var gl = this.contextGL;
gl.clearColor(0.0, 0.0, 0.0, 1.0);
gl.clear(gl.COLOR_BUFFER_BIT);
虽然这确实清除了框架,但它仍然只在绘制旧框架后执行此操作,然后是新框架。
有没有办法清除排队的旧帧?如果没有,有没有办法强制webGL在视野外渲染?