Opengl 如何将着色器中的值传递给CPU?

Opengl 如何将着色器中的值传递给CPU?,opengl,shader,Opengl,Shader,我正在构建一个点云查看器,在这里我需要能够选择一个点进行手动点云注册 我知道可以将鼠标位置传递给片段着色器以选择点。但是如何将结果发送回CPU呢?我认为统一是一个很好的方法,但谷歌搜索结果显示,它在GPU端是只读的 许多框选择示例都使用CPU侧面碰撞检查,在我的例子中,这是不可取的,因为要显示的点数非常多 一种可能的解决方案是使用快速邻域搜索,如八叉树。但我在现阶段不考虑此选项。您可以使用SSBO或着色器存储缓冲区对象。您可以使用它执行读写操作 参考资料:

我正在构建一个点云查看器,在这里我需要能够选择一个点进行手动点云注册

我知道可以将鼠标位置传递给片段着色器以选择点。但是如何将结果发送回CPU呢?我认为统一是一个很好的方法,但谷歌搜索结果显示,它在GPU端是只读的

许多框选择示例都使用CPU侧面碰撞检查,在我的例子中,这是不可取的,因为要显示的点数非常多


一种可能的解决方案是使用快速邻域搜索,如八叉树。但我在现阶段不考虑此选项。

您可以使用
SSBO
着色器存储缓冲区对象。您可以使用它执行读写操作

参考资料: