哈哈,这简单!GL中有一个通过二维坐标获取场景中物体的三维坐标的函数。比如,你在场景中画了一只兔子,当你拿鼠标选择一个二维坐标(比如鼠标的位置),该函数就可以自动获取这个二维坐标在兔子表面对应的三维坐标值。函数名称:gluUnProject函数原型:intAPIENTRYgluUnProject(GLdoublewinx,GLdoublewiny,GLdoublewinz,constGLdoublemodelMatrix[16],constGLdoubleprojMatrix[16],constGLintviewport[4],GLdouble*objx,GLdouble*objy,GLdouble*objz);函数解释:此函数的具体用途是将一个OpenGL视区内的二维点转换为与其对应的场景中的三[来源:GameRes.com]维坐标。注意:需要提供的二维坐标(winx,winy,winz),winz变化从0到1,通常直接取0,而且在windows下编程要注意屏幕坐标是左上角为原点,而opengl中是左上角为原点(只考虑xy平面),因此winy为窗口高度减去从屏幕上获取的坐标y之后的值。最后输出的三维参数存储在objx,objy,objz中。而中间三个参数就是从opengl中获取的视图、透视、视口矩阵了。调用示例:glGetDoublev(GL_MODELVIEW_MATRIX,modelview);glGetDoublev(GL_PROJECTION_MATRIX,projection);glGetIntegerv(GL_VIEWPORT,viewport);gluUnProject((GLdouble)mousex,(GLdouble)window.bottom-mousey,0,modelview,projection,viewport,&objx,&objy,&objz);纯手打,代码调试没问题,祝成功!%D%A
Photoshop|
Dreamweaver|
SVG|
WebGL|
Visual Studio|
PowerDesigner|
Eclipse|
Git|
Apache Ant|
Atom|
Composer|
CodeSmith|
Flex|
Gradle|
Maven|
Sublime Text3|
SVN|
Tableau|
Vim|
Chrome开发者工具|
OpenGL|
Unity|
Direct3D|
用户登录
还没有账号?立即注册
用户注册
投稿取消
文章分类: |
|
还能输入300字
上传中....