john_he 发表于 2007-4-23 22:47:53

[讨论] 有没有必要用DirectInput?

用DI实际上能比处理窗口消息快多少?
如果使用非独占模式,窗口消息照样会发过来,这样不是比处理消息更慢?

yoxola 发表于 2007-4-23 23:28:58

基本上我只用WinAPI裡的消息,即使是動作遊戲,也還是很足夠的,
不過我還是會讓用戶選擇性的使用DInput,但預設是關閉的。

FantasyDR 发表于 2007-4-24 02:32:37

你若用需要使用控制杆,或者其他诡异的操纵设备,DI是不二选择。如果只是键盘……那么倒也没有特别需要DI的地方。

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

shawind 发表于 2007-4-24 10:16:15

没有特殊要求,可以直接用api。
像sdl中的joystick部分,就只用了api,没有用direct input。

john_he 发表于 2007-4-24 10:16:56

因为想用Joystick,所以目前的想法是用DI的,只是要不要把键盘鼠标也交给DI犹豫中……

DI和消息都实现不是有点做无用功的感觉?毕竟目的都是一样的……

yoxola 发表于 2007-4-24 12:55:36

>DI和消息都实现不是有点做无用功的感觉?

如果你的遊戲要提交給Popcap或RealArcade等代理商時,他們就會這樣要求,
至於自己做著玩玩的,愛怎麼用都沒什麼關係。

lw 发表于 2007-5-3 20:08:26

从实现上来说,DI需要你多做一些看得到工作,而WINBD则直接通过回调WINDOW或者是POLL的方式查询…… 于是POLL的话基本上差不多
不过偶没有用过(也不知道有没有)键盘POLL的方式实现

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

lw 发表于 2007-5-3 20:09:04

补充,另外DI还有一些特殊的效果好比反馈……不知道WIN 的有没………………

duzhi5368 发表于 2007-5-15 03:10:49

建议使用DXInput+Win消息处理.原因是两者在特殊的部分有各自的优势.
很简单的一个例子就是,我们的鼠标滚轮移动率大小,在控制面版中是可以调节的.
而对于DXInput来说,你这里的调节,对其是无效的.
这就导致,若仅使用DXInput,来进行鼠标拖拽移动时会有较大的不准确性.也就是说,在鼠标相对位移方面,使用WIN32会优秀的多.而获得鼠标Pos方面,DXInput的算法更为精确,取点效率是象素级,比WIN32准确的多.
所以建议两者一起使用.

john_he 发表于 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实用价值不大
页: [1] 2
查看完整版本: [讨论] 有没有必要用DirectInput?