我正在尝试在圆圈之间进行碰撞检测程序(凝固),这对我来说是非常新的我首先进行检测,检查每一个圆圈。现在我有了创建某种边界框的想法,以便更精确地检查足够接近的圆(当有一组凝固圆时效率更高)。
现在为了更精确的检测,我选择对象后仔细看一下是否有些openGL可以通过检测像素重叠来看两个对象是否重叠?
欢迎进行更优化碰撞检测的其他提示:)
谢谢。
答案 0 :(得分:3)
OpenGL没有这样的内置功能,但你可能能够在旧版(< = 2.1)版本的OpenGL中对“反馈”渲染模式进行混合。
也就是说,对于圆圈的特殊情况,可以更快地找到碰撞。对于候选对圆,如果它们的中心之间的距离小于它们的半径之和,则它们重叠。更快,你可以使用平方距离&避免使用sqrt()
。
答案 1 :(得分:0)
在某种程度上,openGL可以通过检测像素重叠来查看两个对象是否重叠?
OpenGL没有碰撞检测程序。
OpenGL有selection buffer可用于获取在特定区域中呈现的对象列表,但这没有用,因为要检测重叠,您需要知道可能发生重叠的区域。
通过滥用模板缓冲区,您可以获得重叠的像素列表(以及在某个像素上绘制了多少个对象),但为此您必须从模板缓冲区读取数据并手动迭代每个像素。只需手动检查圆形碰撞就会更快(10..100倍)。除非您使用8个或更少的对象,否则您将无法使用模板缓冲区来确定在像素上绘制了哪些对象。
欢迎进行更优化碰撞检测的其他提示
使用树木或“扫描和修剪”算法。