日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

DirectInput:poll轮询理解

發(fā)布時(shí)間:2025/3/21 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DirectInput:poll轮询理解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

DirectInput中,在Acquire之后就已經(jīng)獲取了設(shè)備控制,為什么還要多一步poll輪詢呢?而且輪詢和Acquire的先后順序又是什么呢?對(duì)此一直不理解的我,查了MSDN,終于明白了這個(gè)輪詢的意思。MSDN原文如下:

  

 同樣,翻譯如下:

  從在一個(gè)DirectInput 設(shè)備上被輪詢的設(shè)備中獲取數(shù)據(jù)。如果這個(gè)設(shè)備沒(méi)有請(qǐng)求輪詢,則調(diào)用這個(gè)方法沒(méi)有效果。如果一個(gè)請(qǐng)求輪詢的設(shè)備未被定期輪詢,那么不會(huì)從這個(gè)設(shè)備上接收到新的數(shù)據(jù)。調(diào)用這個(gè)方法導(dǎo)致DirectInput去更新設(shè)備狀態(tài),產(chǎn)生輸入事件(如果緩沖區(qū)數(shù)據(jù)可用),并且設(shè)置通知事件(如果通知可用)。

返回值

  如果這個(gè)方法成功,返回值是DI_OK,如果設(shè)備沒(méi)有要求輪詢,返回DI_NOEFFECT。如果調(diào)用失敗,返回值會(huì)是以下錯(cuò)誤值之一:DIERR_INPUTLOST, DIERR_NOTACQUIRED, DIERR_NOTINITIALIZED.

注意:

  在一個(gè)設(shè)備數(shù)據(jù)能夠被輪詢之前,它的數(shù)據(jù)格式必須通過(guò)使用IDirectInputDevice8::SetDataFormat或IDirectInputDevice8:SetActionMap方法設(shè)置,并且設(shè)備必須被通過(guò)使用IDirectInputDevice8 接口方法被獲取。

?

  另外說(shuō)一下輪詢?cè)诓僮飨到y(tǒng)中的作用:大致來(lái)講,就是cpu通過(guò)訪問(wèn)外設(shè),詢問(wèn)外設(shè)是否有輪詢請(qǐng)求(例如數(shù)據(jù)需要更新),如果需要,就將外設(shè)的最新更新過(guò)的狀態(tài)保存到系統(tǒng)自己的緩沖區(qū)中。而我們則需要通過(guò)IDirectInputDevice8::GetDeviceState方法來(lái)告訴操作系統(tǒng)將保存外設(shè)最新?tīng)顟B(tài)的系統(tǒng)緩沖區(qū)的數(shù)據(jù)復(fù)制到自己傳入的緩沖區(qū)中。

  那么到這里其實(shí)就顯的很明白了。順序上肯定是需要先Acquire再Poll的,原因就是MSDN上注意(Remarks)中所說(shuō)的,在設(shè)備數(shù)據(jù)被輪詢之前,必須先獲取(acquire)。

轉(zhuǎn)載于:https://www.cnblogs.com/FWFC/p/8985026.html

總結(jié)

以上是生活随笔為你收集整理的DirectInput:poll轮询理解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。