[带几何着色器的OpenGL几何挤出

问题描述 投票:2回答:1

使用GLE管和拉伸库(http://www.linas.org/gle/),我可以使用OpenGL将2D物体挤压成3D对象。该库在CPU上完成所有工作,并使用OpenGL立即模式。

我猜想使用Geometry Shaders在GPU上进行拉伸可能会更快,特别是在渲染大量几何图形时。由于我还没有在OpenGL中使用“几何着色器”的经验,所以我想知道这是否可行以及我需要注意的事项。您认为将这些计算移至GPU是一个好主意,并且会提高性能吗?也应该有可能使用“ Render to VBO”将渲染的几何图形从GPU返回到CPU。

opengl geometry-shader
1个回答
1
投票

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

但是您可能想改用阴影映射,这在某些情况下更有效。它还可以为经过alpha测试的对象(例如草)渲染阴影。但似乎您确实需要得到最终的阴影几何形状,因此我不确定是否可以选择这种方式。

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

这是Nvidia的一篇文章,详细解释了该过程:Efficient and Robust Shadow Volumes Using Hierarchical Occlusion Culling and Geometry Shaders

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.