游戏开发论坛

 找回密码
 立即注册
搜索
查看: 6543|回复: 9

DirectInput下鼠标(相对模式)定位问题

[复制链接]

2

主题

10

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2007-7-18 09:13:00 | 显示全部楼层 |阅读模式
窗口模式,共享,鼠标采用缓冲模式
本意是图片能跟随鼠标一起移动,可是发现只要鼠标移动一快,就不精确了,查了好多资料都没解决

case DIMOFS_X:              // X 轴偏移量
                                                x_text=didod.dwData+x_text;
                                                // didod.dwData 里是具体偏移相对值,单位为像素
                                                break;
                                        case DIMOFS_Y:              // Y 轴偏移量
                                                y_text=didod.dwData+y_text;
                                                // didod.dwData 里是具体偏移相对值,单位为像素
                                                break;

图片移动
g_pSprite->Begin(D3DXSPRITE_ALPHABLEND);
                RECT rct_man;


                SetRect( &rct_man,0,0,100,100);
                g_pSprite-> Draw(g_pTexture, &rct_man, NULL, &D3DXVECTOR3(x_text,y_text,0),0xffffffff) ;
                g_pSprite->End();


解决办法之一是在控制面版的“鼠标”选项里,找到一个叫“提高鼠标精确度”的选项,并且去掉。原因不是DirectInputMouse数据丢失,而是你可能是用的相对模式的鼠标。变成绝对坐标方式就好了。(像CS那样的,虽然看起来是相对的,其实人家用的是绝对模式坐标相减求相对坐标,不像咱们都是相对模式坐标相加求绝对坐标~

上面这个方法可以解决,但是不用这个方法怎么解决呢 [em7]

2

主题

10

帖子

10

积分

新手上路

Rank: 1

积分
10
 楼主| 发表于 2007-7-18 13:06:00 | 显示全部楼层

Re:DirectInput下鼠标(相对模式)定位问题

没人知道吗?

8

主题

284

帖子

296

积分

中级会员

Rank: 3Rank: 3

积分
296
QQ
发表于 2007-7-18 14:29:00 | 显示全部楼层

Re:DirectInput下鼠标(相对模式)定位问题

用WINAPI得到鼠标在窗口的位置(所谓的绝对位置),保存这个位置。

第二帧,再得到鼠标的位置,与上一帧的位置相减后就得到鼠标的偏移量。

这也是一种方法。

2

主题

10

帖子

10

积分

新手上路

Rank: 1

积分
10
 楼主| 发表于 2007-7-18 16:36:00 | 显示全部楼层

Re:DirectInput下鼠标(相对模式)定位问题

那样也可以,有没有纯 DirectInput 解决这问题的?

2

主题

10

帖子

10

积分

新手上路

Rank: 1

积分
10
 楼主| 发表于 2007-7-19 09:29:00 | 显示全部楼层

Re:DirectInput下鼠标(相对模式)定位问题

。。。。。顶到有答案为止。。。。。

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2007-7-20 04:06:00 | 显示全部楼层

Re:DirectInput下鼠标(相对模式)定位问题

不知道你这么做是什么意思,是想用特殊图标来表示鼠标吗?

8

主题

34

帖子

34

积分

注册会员

Rank: 2

积分
34
发表于 2007-7-22 19:55:00 | 显示全部楼层

Re:DirectInput下鼠标(相对模式)定位问题

请问游戏是怎么取得鼠标位置的,为什么有时游戏慢的时候鼠标也慢了(是不是鼠标的图片是用纹理自己画的啊?如果是这样,鼠标位置怎么确定呢,根实际位置不一样啊)

27

主题

418

帖子

455

积分

中级会员

Rank: 3Rank: 3

积分
455
QQ
发表于 2007-7-24 00:26:00 | 显示全部楼层

Re:DirectInput下鼠标(相对模式)定位问题

DInput得到的是鼠标的相对移动量,要得到绝对的坐标,必须自己计算。
另外,建议你不要使用缓冲模式。因为在缓冲模式下,鼠标移动速度过快,以前的数据会被顶掉的。

1

主题

26

帖子

26

积分

注册会员

Rank: 2

积分
26
发表于 2007-7-27 14:50:00 | 显示全部楼层

Re:DirectInput下鼠标(相对模式)定位问题

是有这个问题,最显著的就是画一张图片。图片移动速度和鼠标速度不一致(程序中图片坐标和鼠标坐标绑定是一致的),原因是鼠标移动是一个相对值,他计算鼠标上一个点和下一个点之间的相对距离,如果鼠标移动速度过快,鼠标移动看起来就带有加速感觉,如果用API的mousemove消息的话就不会产生这个问。

2

主题

10

帖子

10

积分

新手上路

Rank: 1

积分
10
 楼主| 发表于 2007-8-4 20:48:00 | 显示全部楼层

Re:DirectInput下鼠标(相对模式)定位问题

为什么微软自带的例子里貌似没这个问题,难道是用了mousemove??
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-25 14:27

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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