Opengl 如何在三维空间中使用鼠标拖动对象

Opengl 如何在三维空间中使用鼠标拖动对象,opengl,Opengl,我正在使用OpenGL在3D空间中拖动3D对象。 因为我是OpenGL的新手,所以我不理解其他人对鼠标拖动的看法。事实上,我需要一个示例代码+解释,仅仅解释对我来说是不够的(除非它足够简单和详细)。 我也读过其他论坛,但我还是不明白 像这样的论坛,我一点都不懂 http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=296160 我的问题是如何做到写的那样???鼠标移动在屏幕坐标(2D)中,而对象移动

我正在使用OpenGL在3D空间中拖动3D对象。 因为我是OpenGL的新手,所以我不理解其他人对鼠标拖动的看法。事实上,我需要一个示例代码+解释,仅仅解释对我来说是不够的(除非它足够简单和详细)。 我也读过其他论坛,但我还是不明白

像这样的论坛,我一点都不懂

http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=296160


我的问题是如何做到写的那样???

鼠标移动在屏幕坐标(2D)中,而对象移动在世界空间(3D)中。因此,在平移这些坐标之前,需要将对象移动限制为直线或平面

设置运动平面后,将屏幕坐标转换为世界坐标非常简单,只需将光线投射到场景中,并与运动平面相交即可


所以这是一个两步的过程。你发布的链接提供了更多细节。如果这还不够,请告诉我们您有什么以及卡在哪里。

如何限制物体移动?你们如何使世界坐标和运动平面相交?我知道如何把屏幕调到世界调谐器。其实我还没有开始,因为我不知道如何开始。。。我刚画完对象。void mouseDrag(int x,int y){int按钮;int状态;GLfloat translateX;GLfloat translateY;if((状态==GLUT\u向下)和&(按钮==GLUT\u左按钮))//translate{translateX+=(400-x)/1000.0f;translateY+=(400-y)/1000.0f;}gl\u绘图(translateX,translateY);glutPostRedisplay()}在gl\u绘图()中我使用glTranslatef(translateX,translateY,-6.0f);来转换对象。在main()中,glutMotionFunc(mouseDrag);但我一直遇到这个错误:错误2错误C2664:“glutMotionFunc”:无法将参数1从“重载函数”转换为“void(u cdecl*)(int,int)”F:\UTM courses\OpenGL Tutorials\VidTut\cube\main.cpp 475,我想它指的是mouseDrag()但是错误在哪里呢