使用OpenGL可以加速哪些几何计算

时间:2011-06-15 17:13:39

标签: opengl geometry gpu surface acceleration

我需要加速一些使用密集计算的程序,其中需要从立方体,球体和类似物之间的交叉点进行表面计算。使用CUDA我需要指定我需要的所有formuale,当然,为了分析计算与交叉点相关的信息。但由于我只需要对结果曲面进行很好的近似,我读到OpenGL可以计算或估计这些曲面。我想知道你是否可以给我你的意见或指出我的相关参考资料

2 个答案:

答案 0 :(得分:1)

OpenGL在这里比CUDA或OpenCL更少使用,因为它主要针对绘制三角形细分网格。当然,您可以在现代OpenGL的各种着色器阶段中进行复杂的几何计算。问题是,所有这些计算的结果都是基于像素的图像。有一种反馈机制可以检索已处理的顶点数据,但只能为您提供网格。

任何平面或/和球体的交点实际上都非常简单,可以通过分析完成。真正的硬物是相交的自由曲面(Bezìer或NURBS)。那些通常没有封闭的解决方案,所以你需要做的是在数字上近似修剪最适合交叉点的修剪曲线。

答案 1 :(得分:1)

如果只需要渲染这些对象,可以使用模板缓冲区来评估所需的任何布尔操作:http://www.opengl.org/resources/code/samples/advanced/advanced97/notes/node11.html

可以从交叉表面的透视或正交投影计算的任何数量都可以从这种渲染及其深度缓冲区推导出来。如果你需要提取整个交叉点,你可以尝试使用深度剥离和模板化CSG来提取整个交叉点的分层表示,尽管它在与观察方向平行的表面部分上可能非常不准确将需要做一些额外的工作来将图层拼接在一起: http://developer.download.nvidia.com/SDK/10/opengl/src/dual_depth_peeling/doc/DualDepthPeeling.pdf

编辑:这适用于任意的自由曲面,是一种相当标准的技术。但它确实有其局限性,因为你获得的准确性相当差,你可能必须投射到多个视图以获得足够的对象覆盖。例如,这是一个碰撞检测应用程序:http://www.cs.ucl.ac.uk/staff/b.spanlang/ISBCICSOWH.pdf