Форум: "Игры";
Текущий архив: 2005.01.09;
Скачать: [xml.tar.bz2];
ВнизКартинку в чужой кадр!!! Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.034 c