WebGL 很好而且是异步的,因为您可以发送一长串渲染命令而无需等待它们完成。但是,如果由于某种原因确实需要等待渲染完成,则必须与gl.finish()
. gl.finish
如果接受回调并立即返回肯定会更好吗?
问题:有什么方法可以可靠地模拟这个吗?
用例:我将大量顶点渲染到一个大的离屏画布,然后使用drawImage
将这个大画布的部分复制到页面上的小画布。我实际上没有使用gl.finish()
,但drawImage()
似乎有相同的效果。在我的应用程序中,仅当用户执行操作(例如单击按钮)时才会触发重新渲染,并且可能需要数百毫秒。如果在渲染期间浏览器仍然响应允许滚动等,那就太好了。我特别在寻找 Chrome 解决方案,尽管在 Firefox 和 Safari 中也可以使用的东西会很好。
可能的(坏的)答案:您可以尝试估计渲染需要多长时间,然后设置一个以调用gl.finish()
. 然而,可靠地对所有大小的顶点缓冲区和所有用户进行这种估计将非常棘手和不准确。
可能的(非)答案: requestAnimationFrame
我正在寻找的东西......但它没有,是吗?
2018 年可能的答案:也许ImageBitmap
API 解决了这个问题 - 请参阅MDN 文档。