加速WebGL readPixels的选择

时间:2015-01-13 23:03:15

标签: webgl

我正在实施GLSL选择,它依赖于readPixels()来获取单个像素数据。

我的第一次尝试是在屏幕上简单地绘制彩色地图(1x1像素),读取像素,然后在上面绘制。 令人遗憾的是,fps从固体60降至30-40。

经过一些谷歌搜索,我发现问题是由CPU和GPU之间的同步引起的。所以我尝试在屏幕缓冲区中渲染,如此处所述 http://coffeesmudge.blogspot.com/2013/08/implementing-picking-in-webgl.html

但似乎它没有改变任何东西 - 我仍然在缓冲区中使用时读取它(它必须是活动的,以便readPixels工作)。

所以我的问题 - 我可以以某种方式从屏幕外缓冲区读取而不使用它吗?

1 个答案:

答案 0 :(得分:0)

您可以使用多个渲染目标: https://www.khronos.org/registry/webgl/extensions/WEBGL_draw_buffers/

通过这种方式,您可以将当前帧缓冲区附加到颜色附件0,以及颜色附件中的额外拾取缓冲区1.在额外缓冲区中,您可以编写拾取信息(例如,对象ID)。

由于一切都已完成(场景渲染和渲染拣选缓冲区),所以开销应该是最低限度的。