Гравические приложения, дорисовка поверх

Тема в разделе "WASM.WIN32", создана пользователем spa, 28 окт 2007.

  1. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Начну пожалуй с примера, есть игры DX, OpenGL, надо дорисовать поверх прорисовываемой ими картинке есче чтото: свою консольку, и просто линию. Понятно начинаем с перехватом сообщений окну, а что дальше, рисовать с помощью GUI или это сильно затормозит игру?
    Как всегда мне интересны вши предположения, обсуждение, хорошие и плохие сторонны каждого из решений.

    ЗЫ пожалуй замечу что требуеться как можно более унивирсальное решение (GUI если не будет тормозов - вроде подходит)
     
  2. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    SPA
    Если приложение на DX/OpenGL так и делай на нем, чего мудрить.
     
  3. keYMax

    keYMax New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2003
    Сообщения:
    276
    Адрес:
    Новоуральск
    Рисуется с помощью того же API (DX или OpenGL). Перед запуском приложения нужно прицепить к нему прокси dll через которую пойдут все вызовы. Там же и отслеживать вызов Present в DX или SwapBuffers в OpenGL. Перед вызовом оригинальных методов или функций выпольнять задуманное. Единственное что возможно потребуется для отрисовки, это установка своих матриц и настроек конвеййера перед прорисовкой и восстановление тех что были у приложения.

    На этом же принципе работают всякие d3dspy, dxripper, fraps, glintercept, nvperfhud и т.п
     
  4. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    keYMax
    Ну я предполагал, что GUI не прокатит, и как раз и надо сделать как fraps, но я плохо знаю DX api (openGL тоже плохо но получше), так что еслив есть свободная минутка, и это не состави вам больших трудностей опишити поподробней, какие функции перехватывать, что из них (какую инфу) брать и чем рисовать.

    ЗЫ кстате нарисовать нужно просто линию прям на "экране" и консольку и все
     
  5. keYMax

    keYMax New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2003
    Сообщения:
    276
    Адрес:
    Новоуральск
    На этот вопрос ответит наверное лучше чем я уважаемый Rustem. На этом сайте уже пробегали его работы с правильным инжектом и прочее. Был пример на форуме от Дениса Козыря (Kozyr_) о скидывании скриншота в файл. Возможно стоит это все посмотреть.
     
  6. Rustem

    Rustem New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    429
    Адрес:
    Russia
    SPA
    Не плохо бы обзаветись, для начала, DirectX SDK (можешь взять c www.extcode.com)

    Если интересуют результаты, которые можно получить при помощи перехвата методов,
    то можешь посетить www.3dgamesmodels.by.ru

    Как уже сказали, внедряй длл, перехватывай (для DX), Present, по параметрам получишь указатель на устройство, и можешь делать что хочешь...

    PS. поиск в гугле "directx hook" дал очень не плохие результаты ;)