游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3363|回复: 5

OpenGL如何模仿CS中的鼠标移动操作?

[复制链接]

1

主题

2

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2007-3-30 09:09:00 | 显示全部楼层 |阅读模式
CS中鼠标是用来控制镜头角度的,感觉枪的准星(就是鼠标吧)永远是处于屏幕中心。
请问在OpenGL中怎样进行变换呢?
是根据获取鼠标在窗口上的坐标,然后转换成3维坐标再计算旋转角度,再进行矩阵变换吗?
[em4]

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2007-3-30 17:38:00 | 显示全部楼层

Re:OpenGL如何模仿CS中的鼠标移动操作?

不是"是根据获取鼠标在窗口上的坐标,然后转换成3维坐标再计算旋转角度,再进行矩阵变换吗?"
而是"是根据获取鼠标在窗口上的坐标,然后行矩阵变换"

把鼠标坐标移到 400*300
然后再看看现在鼠标动没动.
如果现在鼠标在 401*300,说明鼠标向右移动1点了.
那么,就 angle+=(401-400)*一个参数,比如 0.1f
场景就可以 glRotatef(angle,0.0f,1.0f,0.0f);

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2007-3-30 17:38:00 | 显示全部楼层

Re:OpenGL如何模仿CS中的鼠标移动操作?

也可以用
gluLookAt

1

主题

2

帖子

8

积分

新手上路

Rank: 1

积分
8
 楼主| 发表于 2007-3-30 23:14:00 | 显示全部楼层

Re:OpenGL如何模仿CS中的鼠标移动操作?

“angle+=(401-400)*一个参数,比如 0.1f
场景就可以 glRotatef(angle,0.0f,1.0f,0.0f);”

可是问题在于鼠标移动的“1”,并不就等于angle的0.1f啊
屏幕随鼠标移动很容易做到,但像CS那样鼠标保持在屏幕中心似乎没那么简单
有人跟我说可以在屏幕转动之后再把鼠标移到中心,但那样做似乎效果不太好

gluLookAt用的参数也是三维的坐标,问题就在于没办法把鼠标取得的窗口二维坐标值转换成三维坐标

0

主题

9

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2007-3-31 14:03:00 | 显示全部楼层

Re:OpenGL如何模仿CS中的鼠标移动操作?

鼠标是属于一种定位设备,可以像DirectInput那样取得它的相对偏移数值的嘛?干嘛要做这些无必要的换算呢?

29

主题

224

帖子

224

积分

中级会员

Rank: 3Rank: 3

积分
224
QQ
发表于 2007-3-31 21:27:00 | 显示全部楼层

Re:OpenGL如何模仿CS中的鼠标移动操作?

鼠标貌似是隐藏的吧,屏幕中间就是一个固定的2D贴图。
只要获取鼠标移动的改变量 +x -x +y -y 就够旋转场景用了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-4-12 22:45

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表