2

借助 GLE 管道和挤压库 ( http://www.linas.org/gle/ ),我能够使用 OpenGL 将 2D 计数挤压成 3D 对象。该库在 CPU 上完成所有工作并使用 OpenGL 即时模式。

我猜想使用几何着色器在 GPU 上进行挤压可能会更快,尤其是在渲染大量几何图形时。由于我还没有任何在 OpenGL 中使用几何着色器的经验,我想知道这是否可能以及我必须注意什么。您认为将这些计算转移到 GPU 上并提高性能是个好主意吗?还应该可以将渲染的几何图形从 GPU 中返回到 CPU,可能使用“渲染到 VBO”。

4

1 回答 1

1

如果几何确实在每一帧都发生了变化,那么您应该在 GPU 上进行。
请记住,不依赖于即时模式的所有其他解决方案都将比您现在拥有的更快。您甚至可能不必在 GPU 上执行此操作。

但也许您想改用阴影贴图,这在某些情况下更有效。它还可以为经过 alpha 测试的对象(如草)渲染阴影。但似乎您确实需要生成的阴影几何图形,所以我不确定这是否适合您。

现在回到影子卷。
使用几何着色器从网格中提取阴影轮廓是一个非常复杂的过程。但是互联网上有足够的信息。

这是 Nvidia 的一篇文章,详细解释了该过程:
使用分层遮挡剔除和几何着色器的高效且稳健的阴影体积

这是另一种方法(从 2003 年开始),它甚至不需要几何着色器,这在低端硬件上可能很有趣:http:
//de.slideshare.net/stefan_b/shadow-volumes-on-programmable-graphics-hardware

如果您不需要最有效的解决方案(使用阴影轮廓),您也可以简单地自行提取网格的每个三角形。这很容易使用几何着色器。在尝试在 GPU 上实现轮廓提取之前,我会先尝试一下。

关于您问题的“渲染到 VBO”部分:
据我所知,无法将几何着色器的输出读回 CPU。不要引用我的话,但我从来没有听说过这样做的方法。

于 2013-10-11T08:36:07.300 回答