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

3

我需要加速一些使用密集计算的程序,其中需要计算立方体、球体等之间交点处的表面计算。使用CUDA,我需要指定所有需要的公式,以便分析计算与交点相关的信息。但由于我只需要对结果表面进行良好的近似,我了解到OpenGL可以计算或估计这样的表面。请问你能否给我您的意见或指向相关参考资料。


1
你能具体说明你想完成的任务吗? - kvark
计算由球体和立方体相交而产生的物体表面积,这个要求够具体了吗? - Open the way
1
不过,这个问题并不像你预期的那样直观地映射到OpenGL上。请查看datenwolf的答案,以感受解决几何问题和光栅化三角形之间的差异。 - Christian Rau
2个回答

1

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

任何平面和/或球体的交点实际上都很容易并且可以通过解析方法完成。真正困难的是相交自由曲面(Bezìer或NURBS)。这些通常没有封闭解决方案,所以您需要做的是数值逼近最符合交点的修剪曲线。


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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接