我已经实现了基于 GPU 的剪贴图地形渲染系统,其中高度直接从 VRAM 中的纹理在顶点着色器中进行采样。但显然我想在任何时候查询高度图 CPU 端,这样我就可以将代理保持在地面上并做其他事情,如植被/建筑物放置、雨溅、其他物理。当然,我可以将高度图保留在主内存中并对其执行双线性采样,但是在两个内存中拥有相同的大型数据集似乎太浪费了。我也可以使用 glGetTexImage 或 glReadPixel 在 4 个点对纹理数据进行采样,但我认为它非常慢,我想每帧采样很多点。实现这一目标的最佳方法是什么?这一定是一个普遍的问题。