使用几何着色器的OpenGL几何体挤出

时间:2013-08-17 07:26:50

标签: opengl geometry-shader

使用GLE管材和挤出库(http://www.linas.org/gle/),我可以使用OpenGL将2D计数器挤出到3D对象中。该库完成CPU上的所有工作并使用OpenGL立即模式。

我想使用几何着色器在GPU上进行挤压可能会更快,特别是在渲染大量几何体时。由于我还没有任何关于OpenGL中几何着色器的经验,我想知道这是否可能以及我需要注意什么。你认为将这些计算转移到GPU并且它会提高性能是一个好主意吗?也可以使用“渲染到VBO”将渲染的几何体从GPU返回到CPU。

1 个答案:

答案 0 :(得分:1)

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

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

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

这是Nvidia的一篇文章,详细解释了这个过程:
http://http.developer.nvidia.com/GPUGems3/gpugems3_ch11.html

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

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

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