我正在使用 Kinect 在 C++ (OpenGL) 中创建一个应用程序。每当我们在 OpenGL 中单击时,调用的函数是
void myMouseFunction( int button, int state, int mouseX, int mouseY )
{
}
但是我们可以使用 Kinect 调用它们吗?也许我们必须为此使用深度缓冲区,但是如何呢?
最佳答案
首先:您不要“在 openGL 中单击”,因为 OpenGL 不处理用户输入。 OpenGL 纯粹是一种渲染 API。您所指的可能是与 GLUT 一起使用的回调; GLUT 不是 OpenGL 的一部分,而是一个独立的框架,它也进行一些用户输入事件处理。
Kinect 不产生输入事件。 Kinect 所做的是,它返回它“看到”的深度图像。您需要以某种方式处理此深度图像。有像 OpenNI 这样的框架可以处理这个深度图像并将其转换为手势数据或类似数据。然后,您可以处理此类手势数据并进一步处理以将其解释为用户输入。
在您的标签中,您提到了“openkinect”,Kinect 的开源驱动程序。然而OpenKinect不提供手势提取和解释,只提供深度图像。您当然也可以对深度数据执行简单的测试。例如,测试某个定义体积范围内的某个对象并将其解释为某种事件。
关于c++ - 使用Kinect调用Open Gl的鼠标功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10773774/