Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 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
9-1094846937
Colt1978
2004-09-11 00:08
2005.01.09
Игровое меню


14-1103368408
MAINUSER
2004-12-18 14:13
2005.01.09
Программеры ОБЬЕДИНЯЙТЕСЬ


1-1103639617
Bobby Digital
2004-12-21 17:33
2005.01.09
Cursor


14-1103525707
syte_ser78
2004-12-20 09:55
2005.01.09
завершение работы приложения


4-1100957096
Nomolos
2004-11-20 16:24
2005.01.09
Аналог папки Fonts





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский