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

Вниз

Картинку в чужой кадр!!!   Найти похожие ветки 

 
Navi1982 ©   (2004-08-20 17:34) [0]

Напрямую в память видюхи нельзя загнать картинку? Или как нибудь иначе, чтобы показать сообщение администратора прямо в самой игре...

У меня проэкт горит... плиз! ;-(

В принцыпе я понимаю, что там всякий кадр перерисовывается и даже я если попытаюсь в видюху загнать свою картинку, то она там долго не продержится... Я подумал, может через таймер какой? Но суть не в этом, МНЕ ГЛАВНОЕ ЗНАТЬ КАК ПОСТАВИТЬ НАПРЯМУЮ КАРТИНКУ В КАДР???.

Буду признателен.


 
Navi1982 ©   (2004-08-20 18:34) [1]

Вот что ещё пришло мне в голову... Навярнека там у видюхи какие-то флаги состояния есть... Так вот, КАКИЕ? и КАК УЗНАТЬ ИХ СОСТОЯНИЕ? Ведь, в конце то концов Виндоуз как-то переключается :-)

И ещё я думаю, что когда обрисовывается кадр (заливаются текстуры) в видюхе, то по окончанию этого момента там возникает событие которое фиксируется в каком-то из флагов состояния.

Кто что про это знает?


 
Darthman ©   (2004-08-20 18:42) [2]

Ага, вызывается смена буфером и начинается заполнение следующего кадра.


 
Navi1982 ©   (2004-08-20 22:29) [3]

Кхе... А будьте так любезна подсказать кодиком? хотяб принцып по подробнее?


 
Mihey_temporary ©   (2004-08-20 23:08) [4]

Попробуй выводить сообщения путём DirectX, наверное через Overlay. Насколько я помню, у DirectX есть принцип, кто последний GDI захватил, тот и рисует.


 
Sapersky   (2004-08-20 23:41) [5]

показать сообщение администратора прямо в самой игре...

Зачем такой выпендрёж? Нельзя принудительно свернуть игру и показать MessageBox?

Напрямую в память видюхи нельзя загнать картинку?

Наверное, можно - если драйвер написать :)
Иначе, ИМХО, только через посредников - DX, OGL.
Ну возьмём DX для примера. Если отдельно инициализировать устройство DX в своей программе - вряд ли что-то получится, т.к. одновременно может быть активно только одно DX-приложение, и при активизации они обычно всё очищают/перерисовывают, так что если и запихать что-то в видеопамять - оно даже на экране не появится, скорее всего.
А вот если получить DX-устройство, которое использует целевое приложение... тогда можно напортачить, наверное :) В DirectDraw и (возможно) OGL можно включить оверлей, и его никакая перерисовка не убъёт. В D3D нет, но можно ещё что-нибудь придумать...
Проблема в том, как получить устройство. В DirectDraw можно попробовать перехватом ф-ии DirectDrawCreate (в OGL - соответствующей ф-ии, создающей контекст), в D3D таким образом можно получить только IDirect3D, а нужен IDirect3DDevice... Перехват Com-вызовов для меня вещь ещё более тёмная, но не исключаю, что в принципе это возможно...
Да, и всё это, как я понимаю, должно происходить в адресном пространстве целевого приложения, т.е. во внедрённой DLL.

В общем, задача весьма сложная, и если проект уже горит, лучше не дёргаться :) Но если таки хочется - копайте по всем непонятным словам, которые встретились в тексте сообщения :)


 
Ландграф Павел ©   (2004-08-21 22:07) [6]

Ужас, я так понимаю это для игрового зала? ну блокируй клаву просто и все, или сварачивай все что запущено, и выводи свой текст с заблакированной клавой... а про 25-й кадр забудь=) в досе можно... винда не допустит тебя к поверхности...


 
Navi1982 ©   (2004-08-22 19:59) [7]

ДА, это для компьютерного зала... А выпендрёжь мне такой нужен, чтобы предупреждать надаедливых клиентов, которые через каждые 3 минуты спрашивают скока им времени осталось. Вот я и хочу им предложить нажать комбинацию клавишь и у них появится время на экране (мощьность компов позволяет :-) ) А ещё, у меня есть идея по борьбе с шумом в зале.

Sapersky, вам отдельное спасибо. Поищю.


 
OSG   (2004-08-23 16:08) [8]

Ты можешь выводить инфу на нулевой DC в таймере. Конечно будет дергаться картинка, но зато результат будет виден.


 
OSG   (2004-08-23 16:18) [9]

Кстати идет и под OpenGL и DirectX. Используется простой GDI


 
OSG   (2004-08-23 16:32) [10]

А если нужно по нажатию клавиш показывать данные: ставишь хук на клаву и потом показываешь данные при нажатии комбинации клавиш. Про хуки и DC информацию можно найти здесь же на сайте.


 
Sapersky   (2004-09-20 13:50) [11]

Недавно наткнулся на madCollection (http://www.madshi.net/olddlp0.htm) - там есть пример перехвата инициализации и вызовов методов D3D (устанавливается wireframe-режим во всех D3D-играх - кстати, полезно в плане изучения полигональной структуры игровой графики).
Можно вывести и сколько времени осталось - например, перехватить EndScene, вывести время и вызвать реальный EndScene - получится "поверх всего".  А по истечении времени - вытворить что-нибудь жуткое :), например, заменить все текстуры на свою с надписью "game over" :) Геймеров кондратий хватит :)


 
Yanis ©   (2004-09-20 18:08) [12]

Если уж
>... проэкт горит... ;-(

На форму разместить таймер с интервалом = 1.

 Timer1.Enabled := False;
   Form1.FormStyle := fsStayOnTop;
   Form1.Show;
 Timer1.Enabled := True;

Нет такого окна которое моглобы перекрыть такое окно :)



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

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

Наверх




Память: 0.5 MB
Время: 0.044 c
14-1103616384
Vasya.ru
2004-12-21 11:06
2005.01.09
regedit не запускается


3-1102531312
dolphin
2004-12-08 21:41
2005.01.09
изменеия options dbgride


3-1102591337
Ivan_
2004-12-09 14:22
2005.01.09
Null в select-e


14-1103403608
none
2004-12-19 00:00
2005.01.09
Любите ли Вы орфографию, и шибко ли?


4-1100809345
Apophis
2004-11-18 23:22
2005.01.09
Обновление списка оборудования ОС