停止相机在墙壁(或障碍物)处移动

时间:2012-10-25 05:52:05

标签: c++ c opengl camera glut

我刚刚学会了一点GLUT,已经设置了一个可移动的相机,照明和放大器制作了包含一些3D表单的class

但现在我希望相机无法通过这些物体。是否有任何类型的OpenGLglut命令,我可以检查特定点或实际摄像机位置是否有障碍物?

2 个答案:

答案 0 :(得分:3)

OpenGL是一个光栅化器API,它不会检查或处理碰撞。检测碰撞的常用方法是边界框或边界球。您可以将摄像机位置视为一个点,并检查它是否在障碍物的边界体积内。要获得边界球体的半径,必须遍历模型中的每个顶点并将距离存储到其中心。你只需要进行一次循环,而不是每一帧。

答案 1 :(得分:2)

OpenGL不是场景图,这意味着它没有场景或世界的任何内部表示。 OpenGL是一个绘图API,它只是在帧缓冲区上绘制点,线和三角形,一次一个 - 然后忘记它们。

因此OpenGL不会为您进行碰撞检测。 可以使用OpenGL实现碰撞检测系统,但这是你的程序所做的事情,而不是OpenGL。