【3D技术宅公社】XR数字艺术论坛  XR技术讨论 XR互动电影 定格动画

 找回密码
 立即注册

QQ登录

只需一步,快速开始

调查问卷
论坛即将给大家带来全新的技术服务,面向三围图形学、游戏、动画的全新服务论坛升级为UTF8版本后,中文用户名和用户密码中有中文的都无法登陆,请发邮件到324007255(at)QQ.com联系手动修改密码

3D技术论坛将以计算机图形学为核心,面向教育 推出国内的三维教育引擎该项目在持续研发当中,感谢大家的关注。

查看: 2051|回复: 5

[求助] 游戏输入控制-DirectInput

[复制链接]
发表于 2009-5-12 12:06:40 | 显示全部楼层 |阅读模式

【菜鸟求助】

前段时间刚开始接触DirectInput,看了dx中的例子后,大致了解了简单的输入应该怎么实现,自己也试着写了小的程序练练手。

 

现在有个问题,就是如果我要实现下面的效果,怎么做才能比较完美的实现:

假如整个屏幕被分成了一个大的网格,然后再屏幕中有个需要控制的物体。当控制物体移动时,比如前进(假设按‘W’键),点一下W前进一格;按住W后就一直向前移动N格,直到松开W。

 

我分别试着读取直接数据(GetDeviceState)和缓冲数据(GetDeviceData)后做处理,但都不能还好的实现。读取直接数据时,不能还好的做到点一下移动一格,大多数情况下都移动了很多格;而读取缓冲数据时,又不能做到长按W后一直移动(只移动了一格)。

 

请问谁知道应该怎么去实现这个效果?

 

--------------------------------------------------------

ps:整个程序基本是按dx的例子【Keyboard】写的。

 楼主| 发表于 2009-5-13 13:03:47 | 显示全部楼层

我也不知道广不广,实际上整个“面积”都还没个很清楚的概念……只是看到了,就想尽量先搞清楚,免得以后用的时候出问题。

----------------------------------------

“背景”是这样的:

 

窗口是划分为网格的,就像个棋盘。

 

某一格子内有一物体,然后左、右方向键分别实现让它向左或向右移动:短按一次,物体移动一格;长按一次,它就持续的移动,直到松开方向键时停止。

 

而现在的问题是,我不能很好的实现上面的效果。

要不然是:   短按或者长按都只移动一格(读取缓冲数据(GetDeviceData)后做处理)

要不然就是:比较难控制在短按一次的时候只移动一格(读取直接数据(GetDeviceState)后做处理)

 

=================================

不知道这次说清楚没有,请你先看看吧~

 楼主| 发表于 2009-5-13 00:26:05 | 显示全部楼层

怎么没人啊,郁闷了………

找了下这里关于 键盘编程 的东西,看到一帖,结果还不能访问~

 

 您在"DirectInput 键盘编程入门"的时候发生错误,共有1项,下面是错误的详细信息

 

 

=============================

 

看了渲染到纹理的帖子,又想到了surface中提到的pitch,到目前为止还不是很清楚。麻烦哪位能帮忙更好的解释一下。

在此先谢过了~

 

 楼主| 发表于 2009-5-13 00:40:24 | 显示全部楼层

刚才提到的surface中的pitch,我搜索到一篇关于创建surface的文章:

http://www.dvpeixun.com/Detail/news-22026.html

 

看了上面的 long lpitch 这个值的解释,算是对pitch又多了点体会(当然,还是没完全弄明白………。这里又提到线性内存模式显示图形,这个也不懂……)

 

==============================

【转】

· LONG lPitch:这个需要好好解释一下。lPitch表示从画面一行行首数据到下一行行首数据的距离,以字节为单位。例如,640×480×16,每一行有640个象素,每个象素需要两个字节装颜色的信息,所以pitch应该是1280个字节,对不对?可能有一些显示卡要多于1280,这每行多于的内存没有装置任何的图形数据,但是防备有些显示卡不能在线性内存模式显示图形,你还是把多于地放在那吧。这种情况很少发生,但你最好还是考虑在内。

发表于 2009-5-13 11:50:21 | 显示全部楼层

你的涉足面积还挺广的啊~~

你主要在问 DX input吧~~这个一直延续的是Dx8的接口,再往后就渐渐不用了~你的问题出在什么地方?

 楼主| 发表于 2009-5-18 16:05:09 | 显示全部楼层

可能是之前程序上错误,让我对处理缓冲数据造成了“误解”。

昨天重新按照以前的想法写了代码,然后运行看了下效果,OK了~现在看来,我问的这个问题还真不是什么问题,难怪没人回答…………

 

不知道最开始是怎么搞,现在都还感觉有点莫名其妙,不过还算好,问题解决了。

 

锁帖~~

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

本版积分规则

手机版|小黑屋|3D数字艺术论坛 ( 沪ICP备14023054号 )

GMT+8, 2025-2-6 10:02

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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