2012-04-26 181 views
0

我试图做一个碰撞检测程序之间的圆圈(凝结),是非常新的这个我首先做了检查,检查每一个圆圈。现在我有了创建某种边界框的想法,以便更精确地检查足够接近的圆(当有一组凝结圆时效率更高)。Opengl:像素重叠(碰撞检测)

现在为了更精确的检测我选择了对象后仔细看看openGL是否可以通过检测像素重叠来了解两个对象是否重叠?

欢迎使用其他技巧来制作更优化的碰撞检测:

谢谢。

回答

3

OpenGL没有这样的内置功能,尽管您可能会在旧版(< = 2.1)版本的OpenGL中混淆“反馈”渲染模式。

这就是说,对于圆圈的特殊情况,有一种更快的方法来查找碰撞。对于一对候选圆圈,如果它们的中心之间的距离小于它们的半径之和,则它们重叠。更快,你可以使用平方距离&避免sqrt()

+0

是的,我正在使用它,但因为圆圈凝结我要计算从组中心到最远圆的距离,然后好像组是大圆圈(从中心到最远的距离圈),如果它与另一组或圈重叠,我会更精确地检查。 – DennisVDB 2012-04-26 21:38:50

0

有些地方openGL可以通过检测像素重叠来看看两个物体是否重叠?

OpenGL没有碰撞检测例程。

OpenGL有selection buffer可以用来获取在某个区域渲染的对象列表,但这不会有用,因为要检测重叠,您需要知道可能发生重叠的区域。

通过滥用模板缓冲区,您可以获得重叠的像素列表(以及在特定像素上绘制了多少个对象),但是您必须从模板缓冲区读取数据并手动迭代每个像素。它会更快(10..100倍)来手动检查圆圈碰撞。除非使用8个或更少的对象,否则将无法使用模板缓冲区来确定在像素上绘制哪些对象。

作出一点更优化的碰撞检测其他提示,欢迎

用树木或“扫剪枝”的算法。