硬件鼠标如何实现??

xychzh 2011-03-12 10:25:01
就是游戏帧率如何卡也不会影响到鼠标的绘制,是有硬件鼠标这个实现吧?
...全文
171 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xychzh 2011-03-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 gamemagic 的回复:]
上面的几个说的都不对
最好的办法是SetCursor
[/Quote]

我想知道,魔兽世界在全屏模式下,如果场景的人物怪物非常多,FPS在10以下,但其鼠标却可以平滑移动,这是怎么实现的?
xychzh 2011-03-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 baesky 的回复:]
引用 6 楼 xychzh 的回复:
引用 5 楼 baesky 的回复:
我假设你使用dx以及windows平台
要实现这种鼠标,最可能也容易实现的办法就是做一个全屏大小的窗口,并设置DX中鼠标显示出来。这个鼠标的绘制其实是windows下gdi的实现,他不受dx绘制离屏表面的影响。不管你dx窗口内容绘制快慢,只要OS没死机或者运行状态正常,该鼠标的移动都是平滑的。


跟窗口化与全……
[/Quote]

前辈所言,顿开茅塞。
原来如此。
那硬件鼠标就仅指窗口模式下了,?
看来有些东西我可能误解了,比如,天下2在加载进度条的时候,鼠标可以平滑移动,这看来和硬件鼠标无关。另外,魔兽世界在全屏模式下,如果场景的人物怪物非常多,FPS在10以下,但其鼠标却可以平滑移动,这又是何故?多线程渲染?硬件鼠标?
gamemagic 2011-03-25
  • 打赏
  • 举报
回复
上面的几个说的都不对
最好的办法是SetCursor
Baesky 2011-03-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xychzh 的回复:]
引用 5 楼 baesky 的回复:
我假设你使用dx以及windows平台
要实现这种鼠标,最可能也容易实现的办法就是做一个全屏大小的窗口,并设置DX中鼠标显示出来。这个鼠标的绘制其实是windows下gdi的实现,他不受dx绘制离屏表面的影响。不管你dx窗口内容绘制快慢,只要OS没死机或者运行状态正常,该鼠标的移动都是平滑的。


跟窗口化与全屏模式有何关系?不是吧?
另外你说的是……
[/Quote]
全屏时候屏幕是被你的device独占的,而窗口化的时候是和GDI协同工作的。在全屏下,你windows下的鼠标根本参与不到绘制中,你想要的所谓“硬件鼠标”应该就是windows OS中的鼠标指针。如果你想要全屏下的“硬件鼠标”可以设想一下:画面中的任何东西,哪个不是通过render画出来的呢?如果通过render画出来,那被绘制的对象又怎么可能超越render本身的速度去显示自己呢?
xychzh 2011-03-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 baesky 的回复:]
我假设你使用dx以及windows平台
要实现这种鼠标,最可能也容易实现的办法就是做一个全屏大小的窗口,并设置DX中鼠标显示出来。这个鼠标的绘制其实是windows下gdi的实现,他不受dx绘制离屏表面的影响。不管你dx窗口内容绘制快慢,只要OS没死机或者运行状态正常,该鼠标的移动都是平滑的。
[/Quote]

跟窗口化与全屏模式有何关系?不是吧?
另外你说的是不是用SetCursorProperties()设置的硬件鼠标?
gamemagic 2011-03-25
  • 打赏
  • 举报
回复
当你SetCursor后,就不用管它了。就算你的程序死了,鼠标照样动
Baesky 2011-03-24
  • 打赏
  • 举报
回复
我假设你使用dx以及windows平台
要实现这种鼠标,最可能也容易实现的办法就是做一个全屏大小的窗口,并设置DX中鼠标显示出来。这个鼠标的绘制其实是windows下gdi的实现,他不受dx绘制离屏表面的影响。不管你dx窗口内容绘制快慢,只要OS没死机或者运行状态正常,该鼠标的移动都是平滑的。

xychzh 2011-03-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hellolongee 的回复:]
可以使用directx实现,设置硬件鼠标的接口
IDirect3DDevice8::SetCursorProperties()
HRESULT SetCursorProperties(
UINT XHotSpot,
UINT YHotSpot,
IDirect3DSurface8* pCursorBitmap
);
有个限制需要注意,只能设置最大为32x32的图片,超过……
[/Quote]

哦,这个有用过,这个就是所谓的硬件鼠标?不受渲染帧率影响?
改天我试试,
看来又要用IDirect3DSurface了,现在是IDirect3DSurface9了吧?
hellolongee 2011-03-23
  • 打赏
  • 举报
回复
可以使用directx实现,设置硬件鼠标的接口
IDirect3DDevice8::SetCursorProperties()
HRESULT SetCursorProperties(
UINT XHotSpot,
UINT YHotSpot,
IDirect3DSurface8* pCursorBitmap
);
有个限制需要注意,只能设置最大为32x32的图片,超过这个尺寸无法显示出来。
xychzh 2011-03-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 quan52687985 的回复:]
一点都不实用!
[/Quote]

如何?
可否指教?
quan52687985 2011-03-12
  • 打赏
  • 举报
回复
一点都不实用!

8,304

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧