用户登录
用户注册

分享至

opengl 平面

  • 作者: 善良的高富帅
  • 来源: 51数据库
  • 2020-10-05
哈哈,这简单!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
软件
前端设计
程序设计
Java相关