как дебагить D3D full-screen приложение?

Тема в разделе "WASM.RESEARCH", создана пользователем Atomic, 15 окт 2004.

  1. Atomic

    Atomic New Member

    Публикаций:
    0
    Регистрация:
    13 окт 2004
    Сообщения:
    3
    с библиотеками разобрался все уже пофиксил успешно.. теперь сложнее задача.



    что делать если при любом переключении экрана приложение резко выходит. А пока оно работает оно всегда сверху. Поверх него впринципе ничего не появляется.Мне надо найти место в программе когда нажимаешь на ентер. и от этой точки внимательно протрейсить.. до момента вывода текста на экран. Есть какой дебаггер способный вылезти поверх D3D экрана.. и при этом не снимать с той проги фокус.
     
  2. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Soft ICE
     
  3. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine


    Где-то в сторону этих степей:
    Код (Text):
    1. 3D 00010000        CMP     EAX, 100               ; WM_KEYDOWN
    2. 74                 JE                             ; WM_KEYDOWN_PROC
    3.  
    4. 817D 0C 00010000   CMP     DWORD PTR [EBP+C], 100 ; WM_KEYDOWN
    5. 74                 JE                             ; WM_KEYDOWN_PROC
    6.  
    7. 837D 10 1B         CMP     DWORD PTR [EBP+10], 0D ; VK_RETURN
    8. 75                 JNZ                            ; VK_RETURN_PROC
     
  4. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    bogrus



    А прикинь, если ентером стрелять надо :) Сколько таких мест будет? :)
     
  5. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine




    По одному на каждого убитого %)
     
  6. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Вообще-то дебажить можно любым отладчиком поддерживающим удалённую отладку, т.е. нужно два компа..
     
  7. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Поскольку там DX, то наверняка будет использован DirectInput, т.е. WM_KEYDOWN и близко не будет.



    PS

    Кнопочки-то и перезадаваться могут - enter так просто не найдёшь.
     
  8. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Я посмотрел DirectX туториалы keYMax-а и Fasm\Examples\DDraw , там везде WM_KEYDOWN. По-этому пришел к выводу, что такое возможно и в проге Atomic
     
  9. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    В одном старом DirectX тетрисе видел чтение клавиатуры через GetAsyncKeyState
     
  10. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Для туториалов оконных сообщений вполне достаточно. Но в реальной игрухе приходится нажимать сразу на несколько кнопок, поэтому логика опроса клавы меняется - не ждём пока клавишу нажмут, а проверяем не нажата ли она.



    В старых DX не было ничего для этого, поэтому GetAsyncKeyState вполне логична.

    Но сейчас есть всякие IDirectInputDevice8::GetDeviceState - они лучше подходят для игрух, да и отлаживать / искать это сложнее, поэтому IMHO лучше трейсить назад - от вывода текста.



    Косвенно провернить используемый API можно так: нажать какие-нибудь кнопке на клаве, а потом enter.

    Если сработает - сообщений точно нет :).