OPENGL鼠标中间缩放问题

C_码农 2014-06-11 03:54:50
滑动鼠标中间对鼠标指向的点进行缩放,在xp中放大到一定程度物体不能完全显示,在WIN7中放大图形就直接消失了

图1是原始图

图2是放大后的图,不能显示完整
求大神帮忙
...全文
165 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
C_码农 2014-06-11
  • 打赏
  • 举报
回复
实现代码: BOOL CMy6TDlg::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt) { CRect rect; GetWindowRect(&rect); int w = rect.Width(); int h = rect.Height(); float camFovy; if(zDelta>0) { glTranslatef(object_x,object_y,object_z); glScaled(Magnification =EnlargeX*1.2,EnlargeY*1.2,EnlargeZ*1.2); glTranslatef(-object_x,-object_y,-object_z); }else { glTranslatef(object_x,object_y,object_z); glScaled(Magnification=EnlargeX*0.5,EnlargeY*0.5,EnlargeY*0.5); glTranslatef(-object_x,-object_y,-object_z); } UpdateData(false); return CDialog::OnMouseWheel(nFlags, zDelta, pt); } void CMy6TDlg::OnMouseMove(UINT nFlags, CPoint point) { GLint viewport[4]; GLdouble modelview[16]; GLdouble projection[16]; GLfloat winX,winY,winZ; glGetDoublev(GL_MODELVIEW_MATRIX, modelview);//视图矩阵 glGetDoublev(GL_PROJECTION_MATRIX, projection);//投影矩阵 glGetIntegerv(GL_VIEWPORT, viewport);//视口 winX=(float)point.x;//OGL中的窗口x坐标 winY=(float)viewport[3]-(float)point.y;//OGL中的窗口y坐标 glReadPixels(point.x,//x坐标 int(winY), 1,1, GL_DEPTH_COMPONENT, GL_FLOAT, &winZ); gluUnProject((GLdouble)winX,(GLdouble)winY,(GLdouble)winZ,modelview,projection,viewport,&object_x,&object_y,&object_z); }
C_码农 2014-06-11
  • 打赏
  • 举报
回复

这幅图也是放大后的效果
凌波多媒体教学网具有以下特点: 领先的优异性能,一流的屏幕广播速度,可以实时广播多媒体课件中的各种动画效果,特别适合多媒体课件的教学; 屏幕广播教学功能支持基于DirectDraw、Direct3D、OpenGL的三维设计、动画制作软件,以及二维和三维游戏,如Pro/E(Pro-Engineer),3D MAX(Autodesk 3DS MAX),Cool 3D等; 屏幕广播教学功能支持各种视频播放软件,对于视频的播放,能够窗口和全屏幕广播众多的视频媒体播放软件,比如:MS Media Player、Real Player、Win DVD、Power DVD、超级解霸等,不会出现黑窗口的问题; 采用音频混合技术,支持多人同时用语音进行交谈,结合任意分组功能,教师可以实现功能强劲的语音教室; 支持各种格式的视频和音频素材的跟读、复读功能令用户尽享英语教学的华丽听觉。使多媒体网络教室一专多能地成为多媒体语音教室; 独创的缩略图显示,可以把整个班级的任意多台学生端电脑的屏幕画面同时显示在教师端,让教师可以方便地一览全局; 独创的并发运行设计,各功能可以任意组合,随心所欲; 独创的拨网线保护,防止学生拨网线; 无人值守,可以自动记录全体学生电脑的屏幕画面,压缩成JPEG格式文件,保存到指定的文件夹中,供教师事后检查学生电脑的使用情况; 能够对所有学生进行任意分组,进行分组讨论,教师可以随时加入任何一组参与讨论,并可以向不同的组广播不同的信息; 教师能够随时将某个学生的荧屏显示和语音等信息,向所有学生或某个组进行广播; 教师能够随时监看和监听某个学生的信息,和控制学生的键盘、鼠标,进行“手把手”式的指导,并可以在学生中间任意切换; 窗口遥控辅导,首创的窗口智能滚动遥控,在教师进行其他各项教学功能的同时,教师可以对多个学生机同时进行遥控操作; 教师能够让某一个学生控制另一学生的鼠标、键盘,采取互助式的学习方法,提高学生的学习效率; 教师可以将所有(某一组或某一个)学生的屏幕设置成“黑屏”,并锁定学生的键盘、鼠标,提醒学生注意听讲; 电子举手功能,教师的屏幕上就能立即反映出“举手”学生的具体位置; 点名签到,便于教师进行考勤管理; 影音广播支持VCD、DVD、MPEG、MP3、AVI、WAV、RM、RMVB、MOV等多种影音文件格式; 屏幕广播及遥控操作中采用智能滚动、自由滚动技术,不必进行屏幕缩放,学生可在接收教师广播过程中边看边操作; 支持软光标、动画鼠标光标、鼠标光标广播,即使在窗口模式下都能体现,鼠标形态实时改变; 支持多窗口的同步同时监看,也可以把监看窗口分布到多台机器上,实时监看其他各学生机的状态; 极强的系统稳定性,保证教学过程的顺利进行; 功能完善,界面美观,各项操作直观简洁、使用统一的操作模式,易学易用; 不需要服务器,纯软件架构,即装即用,升级扩允维护方便; 无用户数限制,方便学校以后添加更多的电脑,解除了学校的后顾之忧。

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧