| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Звук, графика и видео > Как вывести текст в чужое Direct3D приложение? |
| Автор: Attack 5.4.2007, 07:55 |
| Собственно в названии всё сказано... Вообщем необходимо написать слово в DirectX или OpenGL(лучше DX, или в обоих )). Желателен пример кода, так как я всё таки новичок в этом =) |
| Автор: Notreg 29.4.2007, 18:04 | ||
| Для начала тебе нужно организовать ссылку на контекст устройства. Тип такой величины - hdc (Handle Device Context, ссылка на контекст устройства), значение ее можно получить вызовом функции API GetDC с аргументом-ссылкой на устройство вывода. В качестве аргумента указать ссылку на окно (запомни нужное тебе окно). После получения ссылки на контекст устройства обращаемся собственно к функции, которая нам будет херячить текстовые символюхи прямо на контексте устройства (в данном случае на твоем не опознанном окошеке, как ты там его называешь D3D или OpenGL). Первым аргументом этой функции является ссылка на контекст устройства. После использования ссылки ее необходимо освободить, а в конце работы приложения - удалить для освобождения памяти. Нарисовали кляксу(в твоем случае текст) на окне form1 класса tform1:
Это реальное решение не реальной проблемы, как может оказаться не попашит. Можешь купить исходник проги fraps, на сайте fraps.com, и посмотреть как они это сделали, а вообще издеваться над игрушками(особенно не твоими, особенно ради выгоды не респект). Да простит меня модератор. |
| Автор: Attack 30.4.2007, 09:02 |
| Notreg, спасибо, но есть одно НО: D3D или OpenGL приложение постоянно отрисовывается, сного, сного и сного... и получаеться, что то изображение, которое я нарисовал моментально перекроется, а потоянно отрисовывать(в цикле скажем) это очень сложная для процессора задача (( Мне кажеться, что необходимо как то внедриться в 3D приложение и уже рисовать поверх его каждого фрема. Но как это сделать я незнаю =( |
| Автор: Notreg 30.4.2007, 15:41 |
| Похоже на правду, так как fraps считает количество кадров в секунда, да еще и avi пишет с заданным количеством кадоров, то естественно эта прога имеет доступ к отрисованным фреймам. Сразу вопрос на каком уровне это делается, врядли fraps внедряется в D3D приложение (ведь к каждому приложению нужен свой подход). Может fraps пасет это дело уже на уровне воспроизведения системными файлами отвечающими за D3D и openGL. |
| Автор: Notreg 1.5.2007, 18:31 | ||
Наблюдается мерцание, конечно, но проц не нагружен, так как использую таймер. Если еще к тому же действия в таймере провернуть в цикле, то уже 3 оборота, нагружают проц. |