OpenGL图形放大问题

michael2988 2013-02-28 12:15:38
使用OpenGL绘图,当图形放大很多倍后,在使用鼠标移动图形时,图形变动变得不稳定,表现为随机跳跃,不跟随鼠标进行移动。。。这是什么原因?
是否跟glOrtho函数的zNear,zFar参数有关?
...全文
632 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
victor_woo 2013-03-04
  • 打赏
  • 举报
回复
.. -1000000.0, 100000.0); 在场景范围内 glLookAt 其视点位置无影响
victor_woo 2013-03-04
  • 打赏
  • 举报
回复
引用 11 楼 michael2988 的回复:
视口的设置: C/C++ code?1glOrtho(-w / 2, w / 2, -h / 2, h / 2, -1000000.0, 100000.0);
哦,没注意这个补充 放弃用scale实现缩放,改为调整w / h值(保持和ViewPort的比例关系) m_pCam->GetScale() glOrtho(-w*m_pCam->GetScale() / 2, w*m_pCam->GetScale() / 2, -h*m_pCam->GetScale() / 2, h*m_pCam->GetScale() / 2, -1000000.0, 100000.0);
victor_woo 2013-03-04
  • 打赏
  • 举报
回复
gluLookAt(m_pCam->m_target.x, m_pCam->m_target.y, m_pCam->m_target.z, 0.0f, 0.0f, 0.0f, m_pCam->m_up.x, m_pCam->m_up.y, m_pCam->m_up.z); 你的视点是固定的!!! 当然鼠标动作中改变的了target和up glScaled(m_pCam->GetScale(), m_pCam->GetScale(), m_pCam->GetScale()); 你想过没有,你这个scale放大时尺寸大到包住你的视点!!那看的就是物体内部了 不要去改变物体的大小, 不建议使用 glScale 可以配合投影方式实现放大 glOrtho(-w / 2, w / 2, -h / 2, h / 2, -1000000.0, 100000.0); 参数表示视点为中心的 左 右 下 上 后 前的距离,前面四个和视窗尺寸保持比例减小时 是放大效果(LookAt相关参数保持不变) 理论上无限大,用屏幕尺寸显示很小尺寸的形体
michael2988 2013-03-04
  • 打赏
  • 举报
回复
视口的设置:
glOrtho(-w / 2, w / 2, -h / 2, h / 2, -1000000.0, 100000.0);
michael2988 2013-03-04
  • 打赏
  • 举报
回复
引用 9 楼 victor_woo 的回复:
和你放大实现机制有关系吧 有的人真的把模型给放大了 scale 如果glortho投影的话,缩小left-rigth-top-bottom也可实现放大效果 跳跃的话应该是旋转时超出了View 的frustrum? 一会进来 一会出去
那要怎么调整?我的放大代码如下:

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

glPushMatrix();
gluLookAt(m_pCam->m_target.x, m_pCam->m_target.y, m_pCam->m_target.z,
	0.0f, 0.0f, 0.0f,
	m_pCam->m_up.x, m_pCam->m_up.y, m_pCam->m_up.z);

// main picture show
glPushMatrix();
glTranslatef(m_pCam->m_position.x,
	m_pCam->m_position.y,
	m_pCam->m_position.z);
glScaled(m_pCam->GetScale(), m_pCam->GetScale(), m_pCam->GetScale());
victor_woo 2013-03-03
  • 打赏
  • 举报
回复
和你放大实现机制有关系吧 有的人真的把模型给放大了 scale 如果glortho投影的话,缩小left-rigth-top-bottom也可实现放大效果 跳跃的话应该是旋转时超出了View 的frustrum? 一会进来 一会出去
michael2988 2013-03-01
  • 打赏
  • 举报
回复
是不是图形放大很多很多倍后,它就会不稳定。。。。
michael2988 2013-02-28
  • 打赏
  • 举报
回复
引用 6 楼 vrace 的回复:
那你是怎么缩放的呢,是在 projection 还是 modelview 呢?是不是用的正交投影呢?如果是正交投影,宽高是否和viewport一致呢?
嗯,在modelview,我的情况是在放大倍数不大时,移动时正常的,放大 很多 倍时,移动变得不正常
vrace 2013-02-28
  • 打赏
  • 举报
回复
那你是怎么缩放的呢,是在 projection 还是 modelview 呢?是不是用的正交投影呢?如果是正交投影,宽高是否和viewport一致呢?
michael2988 2013-02-28
  • 打赏
  • 举报
回复
引用 4 楼 vrace 的回复:
如果你先 glScale 再 glTranslate 的话,移动的大小也是被缩放了的。
我是移动了再放大
vrace 2013-02-28
  • 打赏
  • 举报
回复
如果你先 glScale 再 glTranslate 的话,移动的大小也是被缩放了的。
tygh2001 2013-02-28
  • 打赏
  • 举报
回复
放大以后,移动的变量应该跟着缩放进行变化,最好。
michael2988 2013-02-28
  • 打赏
  • 举报
回复
引用 1 楼 sha_jinhao 的回复:
opencv不是很了解 lz为什么不改变参数一是!
试过,感觉上是有关,不过不确定,。。
jimette 2013-02-28
  • 打赏
  • 举报
回复
opencv不是很了解 lz为什么不改变参数一是!

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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