我想实现这样的效果,当鼠标按下并移动时,让显示的模型也随之移动实现方法是 在mousemove事件中 改变glulookat的参数的值 代码如下void LwShow3DwndCL::OnLButtonDown(UINT nFlags, CPoint point)
{
LeftPointM = point;
PrePointM = point; CWnd::OnLButtonDown(nFlags, point);
}void LwShow3DwndCL::OnMouseMove(UINT nFlags, CPoint point)
{
...
float cx, cy;
cx = point.x - PrePointM.x; //移动的偏移量
lookAtRM[0] = lookAtRM[0] - cx ; //改变视点x方向位置
...
}
注:LeftPointM ,PrePointM 用于记录鼠标按下的位置,为了后面计算偏移量,lookAtRM为一个浮点行的大小为3的数组,是glulookat的前三个参数,这里只对第一个参数进行改变。问题是,这样写后,当鼠标在画面上移动一个象素时,视点(模型)变化的幅度很大,大概有好几十象素,这个问题该如何解决呢,还有我不想用glTranslatef来实现平移,只想用glulookat的方式实现,请大侠们不吝赐教,谢谢啦。
{
LeftPointM = point;
PrePointM = point; CWnd::OnLButtonDown(nFlags, point);
}void LwShow3DwndCL::OnMouseMove(UINT nFlags, CPoint point)
{
...
float cx, cy;
cx = point.x - PrePointM.x; //移动的偏移量
lookAtRM[0] = lookAtRM[0] - cx ; //改变视点x方向位置
...
}
注:LeftPointM ,PrePointM 用于记录鼠标按下的位置,为了后面计算偏移量,lookAtRM为一个浮点行的大小为3的数组,是glulookat的前三个参数,这里只对第一个参数进行改变。问题是,这样写后,当鼠标在画面上移动一个象素时,视点(模型)变化的幅度很大,大概有好几十象素,这个问题该如何解决呢,还有我不想用glTranslatef来实现平移,只想用glulookat的方式实现,请大侠们不吝赐教,谢谢啦。
解决方案 »
- 有趣的俄罗斯方块 自己写的 大家有兴趣看看
- 在常规DLL中使用MFC类(CListCtrl)指针出错!
- 从字符串转换成整形时,如何判断该字符串内容为纯数字?
- 很简单的问题,白送分了...(Hotkey)
- 如何让对话框,做启动画面(我想做个用户登陆的),(请您详细说明一下,有例子最好!)在线等!!!!!!!!
- 两个对话框互相打开和隐藏?
- 哪些兄弟正在或曾经开发nms卡,希望大家留下oicq或email,大家交流一下呀!!!
- 关于切分窗口的问题
- 同学的银行要比赛,要俺给他写几个程序??
- 在CLeftView中如何获得CListView的句柄?
- 急寻播放器中波形显示源代码(有偿)
- 关于前导字节leadbyte,大家帮忙看看这段代码。
直接复制过来就得了