Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.03.06;
Скачать: CL | DM;

Вниз

Вывод текста на изображение игры   Найти похожие ветки 

 
PMak ©   (2008-03-12 14:02) [0]

прочитал статьи по DirectX, посмотрел примеры, как вариант вывода надписи с помощью заголовков Direct3D распространяемых www.clootie.ru . мне интересно, как подключиться к поверхности игры, чтобы выводить туда текст. я в этом деле новичек, сорри если с терминологией напутал, очень надо


 
Eraser ©   (2008-03-12 17:02) [1]


> PMak ©   (12.03.08 14:02)

в общем случае никак, поэтому лечше не изобретать велосипед, а либо рисовать на поверхности DC экрана, либо писать свой драйвер )


 
PMak ©   (2008-03-12 18:45) [2]

Может посоветуете что: игра Ил2 и надо вывести текстовую информацию поверх игры. что то типа OSD дисплея.


 
Sapersky   (2008-03-12 19:37) [3]

Простой вариант: переключить Ил-2 в оконный режим и выводить всё что надо в своём окне рядом с игрой.
Сложный: внедрение DLL в адресное пространство игры, перехват OpenGL-функции SwapBuffers (у Ил-2 "родной" движок  OpenGL"ный), вывод текста средствами OGL (или можно попробовать просто на DC окна, если сразу после SwapBuffers, мерцать не должно).


 
Sapersky   (2008-03-12 23:16) [4]

Ещё можно использовать оверлей, при условии, что разрешение в игре такое же, как на рабочем столе.


 
PMak ©   (2008-03-13 05:52) [5]

т.е. если разрешение в игре меньше чем у рабочего стола, то оверлей работать не будет?


 
Sapersky   (2008-03-13 10:40) [6]

Если игра его изменяет, в большую или меньшую сторону - неважно.
Собственно, нет гарантии, что будет везде работать и при сохранении разрешения (хотя у меня работает). Теоретически - не должно, т.к. при использовании полноэкранного (эксклюзивного) режима DX(OGL)-приложение выкидывает из видеопамяти данные всех прочих приложений. Практически, вероятно, в некоторых драйверах переход в полный экран с сохранением разрешения реализован без использования эксклюзивного режима.


 
PMak ©   (2008-03-13 11:39) [7]

есть программа TeamSpeak Overlay http://www.teamspeakoverlay.com, она работает и в OpenGL и в DirectX, я ориентировался на этот пример. К сожалению я работаю с БД, а необходимость вывода поверх Ил2 возникла при разработке клиентской части к программе управляющей сервером, для вывода сервером информации касающейся игрока. Чем больше читаю о методах, тем в голове все больше каши :(
Может кто поможет, хотя бы набросками или небольшим примером, плиз


 
Sapersky   (2008-03-13 13:58) [8]

есть программа TeamSpeak Overlay http://www.teamspeakoverlay.com

Судя по:
It does this by directly hooking the DirectX or OpenGL APIs.
она работает через перехват API. Overlay - это, видимо, просто название, с соотв. аппаратной функцией видеокарты никак не связано.
Пример перехвата D3D есть в библиотеке madCodeHook. Также статьи по перехвату (с примерами на Delphi) есть на wasm.ru. Ну и соотв. глава известной книги Рихтера...

Насчёт того оверлея, про который я писал в [4], [6] и здесь:
http://www.delphimaster.ru/articles/directx/index.html
конкретно с OGL можно попробовать что-то сделать, слышал утверждения что полноэкранный режим у него "ненастоящий". Проверял вот этот пример:
http://sapersky.narod.ru/files/FString.rar
с любительскими OGL-игрушками (Ил-2 под рукой нет). C одной оверлей удаётся переинициализировать при переключении режима, с другой нет - похоже, тут как повезёт (с D3D не повезёт определённо).


 
PMak ©   (2008-03-13 14:43) [9]

Спасибо большое буду разбираться, пример отлично работает, осталось разобраться чтобы фон был прозрачный, я думаю разберусь потихоньку


 
Sapersky   (2008-03-13 16:01) [10]

Прозрачный фон в примере должен быть (включается DXOverlay.SetSrcColorKey), но практически его наличие зависит от видеокарты. На Radeon 9000 - есть, на интегрированной в i915 - нет (хотя она пишет в OverlayCaps, что умеет src color key).


 
PMak ©   (2008-05-15 18:22) [11]

Спасибо Sapersky, код работает на Ил-2. но уперся в проблему прозрачного фона при использовании видеокарт GeForce, на АTI все идеально. В статье говорится что пример работал на GeForce 2MX400, но я не смог сделать фон прозрачным. Реально побороть данную проблему или нет?


 
Sapersky   (2008-05-16 00:03) [12]

В статье говорится что пример работал на GeForce 2MX400

Это про тот пример, который вместе со статьей идёт. Там несколько другая функция используется (destination color key). А source color key, который нужен для прозрачного фона, на GeForce"ах тогда не было. Если и сейчас нет - значит, не судьба.



Страницы: 1 вся ветка

Текущий архив: 2011.03.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.007 c
2-1291981591
Xmen
2010-12-10 14:46
2011.03.06
Форма анкетирования


11-1231630051
zangk2k
2009-01-11 02:27
2011.03.06
how do i install the KOL in Delphi 2009?


15-1290852684
Чайник
2010-11-27 13:11
2011.03.06
Удалить файл


2-1292171520
v_a_belousov
2010-12-12 19:32
2011.03.06
Отправка письма


2-1292090673
Анонимус
2010-12-11 21:04
2011.03.06
Вопрос про сплиттер, Delphi 7