locked
如何使用C#得知螢幕下一秒會顯示什麼圖形? RRS feed

  • 一般討論

  • 我想要做一個可以根據遊戲下一秒顯示的圖形對電腦送出指令的程式。

    我知道每一個圖形在顯示出螢幕之前都先經過API,那我要如何在螢幕顯示之前就得知螢幕即將要顯示什麼圖形呢?

    自身本來有用攝圖的方法去做,但是後來發現攝圖下來還要用電腦進行圖像判斷,有點太慢,所以才會想要讓程式比螢幕還早得知下一秒顯示的圖形。


    2011年3月22日 上午 03:21

所有回覆

  • 這不太可能吧, 你應該要找多啦A夢才對.

    2011年3月22日 上午 04:23
  • 如果是別人的程式顯示的內容, 就只能用掃瞄辨識的方式處理了
    2011年3月22日 上午 05:52
  • 最新院線片:「看見下一秒」
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年3月22日 下午 01:29
  •  

    因為視窗 處理標準重繪訊息 會有 WM_PAINT 訊息送出  然後處理 圖形 跟裝置 DC( device context ) 做會處理

    我知道最快在這裡攔截只限於本身寫的 程式中.至於想抓其他EXE 檔的 device context 我沒做過可能要寫信問微軟

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    c++有取得訊息方法如下理面是API 寫法至於你要如何活用 應該C#也能辦到

    http://msdn.microsoft.com/zh-tw/library/bb384843.aspx

    請注意這段:

    switch (message)
        {
        case WM_PAINT:
            hdc = BeginPaint(hWnd, &ps);

            // Here your application is laid out.
            // For this introduction, we just print out "Hello, World!"
            // in the top left corner.

    ////////////////////////////////////////////////////////////////////////

     

    2011年3月23日 上午 07:20
  • 遊戲先不說用 DirectX / OpenGL ,就算一般用 GDI 遊戲,也是先畫在記憶體,在一次貼到可視 DC 上。
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年3月23日 下午 02:23
  • LCD 螢幕的繪圖頻率是 60Hz, 如果是 3D 的則是 120 Hz; 如果玩遊戲的話, 爛一點的遊戲顯卡至少也要能撐到 15 fps。換句話說, 一秒之內螢幕最少就顯示 15 幀圖片了。

    不管你原來想達成什麼目的, 要預先知道將要顯示的圖形, 而且運算時間需要一秒, 應該都是辦不到的。我認為唯一的做法就是把圖形辨識的運算速度盡量提升到15分之一秒或更快, 否則沒有即時感可言。


    ASP.NET 2Share - http://www.dotblogs.com.tw/johnny
    2011年3月25日 上午 11:36
  • JOHNN.NET 大大 照你所說 那寫game 也可能辦到.

    他一樣 要把 背後物件 跟人物圖 做運算壓...

    至於如何 應該 還是要問看看 有人肯說嗎 或 寫信問微軟吧

    2011年3月28日 上午 08:47
  • 原發問人並沒有說明他的程式的目的是什麼, 但我覺得這裡面其實並沒有太大的學問存在。如果遊戲程式是我寫的, 我當然知道我即將要做的是什麼事情, 例如我要把場景 pan 到哪個角度, 甚至我知道遊戲中每個角色的座標與 dimension, 根本不需要去做什麼影像辨識。但如果是要去判斷其它程式或機制已經 render 出來的東西, 你就只能使用影像辨識的做法。然而, 我在前面說過, 基於每秒至少有15幀圖片切換的現實, 如果遊戲沒辦法在15分之一秒回應玩家的動作(挑剔的玩家也許會要求到60分之一秒, 所以才會花大錢去買頂級的顯示卡), 即時感就會喪失, 使用者就會感覺到頓頓的。我要說的是, 應該不會有遊戲能接受下達指令之後, 畫面要花上一秒才顯示的。拿簡單的俄羅斯方塊做例子好了, 在比較後面的關卡, 方塊從最頂端掉到最下面的時間恐怕連半秒都沒有。

    但是如果不要求即時感呢? 就像相機的人臉辨識一樣, 它很顯然做不到即時辨識, 但也沒聽過有人抱怨。如果既要求即時感, 運算又不能在最短時間之內完成, 那就表示這個問題無解。


    ASP.NET 2Share - http://www.dotblogs.com.tw/johnny
    2011年3月28日 上午 09:52
  • To: workman

    關鍵點在 "下一秒", 如果我的電腦可以寫一個程式猜出下一秒螢幕上要顯示什麼, 那表示這是一種 "預測", "預測" 在中文的解釋叫做 "猜想還沒有發生的事情", 如果我可以準確預測出畫面的下一秒 (誰知道哪個冒失鬼會在某個畫格中突然冒出來在你的畫面裡呢 ?), 應該也可以預測出下一期威力彩的開獎號碼 .

    關於這類 "回到未來" 的劇情, 基本上應該是在CERN或是費米實驗室所討論的範圍.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2011年3月29日 上午 02:00
    版主
  • 遊戲是嗎?

    以一個穩定30FPS的遊戲來說

    一秒就有30個畫面顯示出來,也就是每0.03秒就要畫一次畫面

    沒有一個遊戲會先計算出"下一秒"的畫面~~然後等一秒後才顯示

    既然"下一秒"的畫面遊戲自己都沒畫出來~你也不可能取得

    那你要改成取下一個FRAME嗎?

    遊戲要出圖~會把一堆資料送到顯示卡

    顯示卡也必須及時運算後才會有最終呈現的圖

    最終要呈現的圖只會COPY到顯示的裝置上~

    你唯一個機會就是從"COPY到顯示裝置上"的時候攔截

    而你攔截到的時候~畫面就顯示了!

    你只能攔截到現在畫面上即將出現的圖~

    即使你取道了~你要怎麼在0.03秒之內判斷?

    如果想做外掛之類的~請從遊戲內的資料作判斷吧~~用畫面判斷太不切實際了!

    2011年3月29日 上午 03:28
  • 遊戲先不說用 DirectX / OpenGL ,就算一般用 GDI 遊戲,也是先畫在記憶體,在一次貼到可視 DC 上。

    六樓時已說過,沒人理我...

     

    有沒有人可以的前提是先理論推得出來。

    如何得知該程式下一秒要畫啥?返組譯追蹤得到的也只是邏輯,而瞬間變數具有時變性,你沒辦法預期該變數在 0.XX 秒後發生作用,甚至可能還有很多隨機變數在裡面,那可能還要反推亂數表。

    而且已樓主的需求來說,如果真的反組譯的話,直接找數值還比較快,給電腦看的是數值,給人腦看的是圖,給人腦看的圖形轉回電腦看得數值,那是計算圖學、計算幾何的領域,進階的高速演算法全是商業機密,那還不如討論像是遊戲大師那種直接讀記憶體的方式...

    以計算幾何的角度來說,你可以試試兩任意多邊形交集的邏輯推算,除了多個交點座標外,保持原先的座標解析度的要求下,如果你能找出一個比別人高速或接近目前高速的演算法或是前人都沒想過的演算法... 我找過這方面的論文,這是博士論文級的...

    然後你還要做後面的分析...

    目前 OCR 多半是走計算圖學,因為 pixel 有限,因此這類演算法隨 pixel 解析度提高成平方倍增加,一般都是先從理論找出特徵值,然後直接掃出特徵向量,才進行框選與辨識。

     

    數學是科學的基礎,演算法建構在數學之上,能建出數學模型才可能達成樓主的需求。

     

    而我認為樓主根本就搞不清楚他真正的需求。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年3月29日 下午 03:05
  • 所以引戰,刻意引戰與潛在影射人身攻擊的文章我已刪除。

    是非對錯自有公斷。

    另,由於發問者自始至終都沒出現,因此本文改為一般討論並暫時鎖定。


    小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
    雲端學堂Facebook: http://www.facebook.com/pages/StudyAzurecom-yun-duan-xue-tang/155855707799579
    2011年3月30日 上午 07:22
    版主