如果几何确实在每一帧都发生了变化,那么您应该在 GPU 上进行。
请记住,不依赖于即时模式的所有其他解决方案都将比您现在拥有的更快。您甚至可能不必在 GPU 上执行此操作。
但也许您想改用阴影贴图,这在某些情况下更有效。它还可以为经过 alpha 测试的对象(如草)渲染阴影。但似乎您确实需要生成的阴影几何图形,所以我不确定这是否适合您。
现在回到影子卷。
使用几何着色器从网格中提取阴影轮廓是一个非常复杂的过程。但是互联网上有足够的信息。
这是 Nvidia 的一篇文章,详细解释了该过程:
使用分层遮挡剔除和几何着色器的高效且稳健的阴影体积。
这是另一种方法(从 2003 年开始),它甚至不需要几何着色器,这在低端硬件上可能很有趣:http:
//de.slideshare.net/stefan_b/shadow-volumes-on-programmable-graphics-hardware
如果您不需要最有效的解决方案(使用阴影轮廓),您也可以简单地自行提取网格的每个三角形。这很容易使用几何着色器。在尝试在 GPU 上实现轮廓提取之前,我会先尝试一下。
关于您问题的“渲染到 VBO”部分:
据我所知,无法将几何着色器的输出读回 CPU。不要引用我的话,但我从来没有听说过这样做的方法。