幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 6323|回复: 13

[游戏编程] [讨论] 有没有必要用DirectInput?

[复制链接]

23

主题

218

帖子

2470

积分

⑥精研

积分
2470
发表于 2007-4-23 22:47:53 | 显示全部楼层 |阅读模式
用DI实际上能比处理窗口消息快多少?
如果使用非独占模式,窗口消息照样会发过来,这样不是比处理消息更慢?
ONScripter for PSP/Windows中文版 http://blog.163.com/john_he_
回复

使用道具 举报

9

主题

1512

帖子

9136

积分

荣誉群

Cod3r

积分
9136

终身成就奖

发表于 2007-4-23 23:28:58 | 显示全部楼层
基本上我只用WinAPI裡的消息,即使是動作遊戲,也還是很足夠的,
不過我還是會讓用戶選擇性的使用DInput,但預設是關閉的。
(\\__/) (O.o ) (> < ) This is Bunny.
回复 支持 反对

使用道具 举报

50

主题

994

帖子

6699

积分

管理员

爱干啥干啥!

Rank: 9Rank: 9Rank: 9

积分
6699
发表于 2007-4-24 02:32:37 | 显示全部楼层
你若用需要使用控制杆,或者其他诡异的操纵设备,DI是不二选择。如果只是键盘……那么倒也没有特别需要DI的地方。

但是,难道游戏不需要控制杆么?所以DI吧……

“放下屠刀,立地成佛” 故应先杀生,然后再成佛。

(\\_/) (-_-) ()+() this is bunny priest.
回复 支持 反对

使用道具 举报

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
发表于 2007-4-24 10:16:15 | 显示全部楼层
没有特殊要求,可以直接用api。
像sdl中的joystick部分,就只用了api,没有用direct input。
え~え~お!!!
回复 支持 反对

使用道具 举报

23

主题

218

帖子

2470

积分

⑥精研

积分
2470
 楼主| 发表于 2007-4-24 10:16:56 | 显示全部楼层
因为想用Joystick,所以目前的想法是用DI的,只是要不要把键盘鼠标也交给DI犹豫中……

DI和消息都实现不是有点做无用功的感觉?毕竟目的都是一样的……
ONScripter for PSP/Windows中文版 http://blog.163.com/john_he_
回复 支持 反对

使用道具 举报

9

主题

1512

帖子

9136

积分

荣誉群

Cod3r

积分
9136

终身成就奖

发表于 2007-4-24 12:55:36 | 显示全部楼层
&gt;DI和消息都实现不是有点做无用功的感觉?

如果你的遊戲要提交給Popcap或RealArcade等代理商時,他們就會這樣要求,
至於自己做著玩玩的,愛怎麼用都沒什麼關係。
(\\__/) (O.o ) (> < ) This is Bunny.
回复 支持 反对

使用道具 举报

50

主题

742

帖子

402

积分

版主

自定义头衔

Rank: 7Rank: 7Rank: 7

积分
402
发表于 2007-5-3 20:08:26 | 显示全部楼层
从实现上来说,DI需要你多做一些看得到工作,而WINBD则直接通过回调WINDOW或者是POLL的方式查询…… 于是POLL的话基本上差不多
不过偶没有用过(也不知道有没有)键盘POLL的方式实现

总之实时GAME个人始终认为实用POLL比较好……以上 [s:5]
Style-C
回复 支持 反对

使用道具 举报

50

主题

742

帖子

402

积分

版主

自定义头衔

Rank: 7Rank: 7Rank: 7

积分
402
发表于 2007-5-3 20:09:04 | 显示全部楼层
补充,另外DI还有一些特殊的效果好比反馈……不知道WIN 的有没………………
Style-C
回复 支持 反对

使用道具 举报

7

主题

190

帖子

1766

积分

⑥精研

....

积分
1766
发表于 2007-5-15 03:10:49 | 显示全部楼层
建议使用DXInput+Win消息处理.原因是两者在特殊的部分有各自的优势.
很简单的一个例子就是,我们的鼠标滚轮移动率大小,在控制面版中是可以调节的.
而对于DXInput来说,你这里的调节,对其是无效的.
这就导致,若仅使用DXInput,来进行鼠标拖拽移动时会有较大的不准确性.也就是说,在鼠标相对位移方面,使用WIN32会优秀的多.而获得鼠标Pos方面,DXInput的算法更为精确,取点效率是象素级,比WIN32准确的多.
所以建议两者一起使用.
萝卜啊,白菜啊,土豆星啊,梦想有爱啊。
回复 支持 反对

使用道具 举报

23

主题

218

帖子

2470

积分

⑥精研

积分
2470
 楼主| 发表于 2007-5-19 05:26:18 | 显示全部楼层
从实现上来说,DI需要你多做一些看得到工作,而WINBD则直接通过回调WINDOW或者是POLL的方式查询…… 于是POLL的话基本上差不多
不过偶没有用过(也不知道有没有)键盘POLL的方式实现

总之实时GAME个人始终认为实用POLL比较好……以上

POLL……是指即时数据?
我觉得游戏的话用即时数据比较合适,用缓冲数据太过麻烦,而且觉得不是很有必要……

DI的力反馈是不打算做了……WIN貌似没有这功能。
建议使用DXInput+Win消息处理.原因是两者在特殊的部分有各自的优势.
很简单的一个例子就是,我们的鼠标滚轮移动率大小,在控制面版中是可以调节的.
而对于DXInput来说,你这里的调节,对其是无效的.
这就导致,若仅使用DXInput,来进行鼠标拖拽移动时会有较大的不准确性.也就是说,在鼠标相对位移方面,使用WIN32会优秀的多.而获得鼠标Pos方面,DXInput的算法更为精确,取点效率是象素级,比WIN32准确的多.
所以建议两者一起使用.
Window消息的精度也足够了吧……而且我不觉得DI会比win精度高……
鼠标光标用GetMousePos比DI方便多了(FPS的不知道),DI还要自己算坐标……
所以感觉不用JOY的话DI实用价值不大
ONScripter for PSP/Windows中文版 http://blog.163.com/john_he_
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-4-27 23:50 , Processed in 0.029912 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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