![]() |
|
![]() ![]() ![]() |
|
p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: нет Всего: 112 |
Кстати, я тут посмотрел, похоже к видеопамяти есть прямой доступ без всяких прибамбасов.
В директдраве у PrimarySurface делаем Lock ( + можно сразу же Unlock), при этом получаем адрес сурфейса. Этот адрес соответсвует базовому адресу видеопамяти (очень похоже на это). Читайте и пишите туда наздоровье, как говорится, только против оверлеев это не спасёт... -------------------- С уважением, г-н Посол. |
|||
|
||||
oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 2 Всего: 34 |
Neo! оверлеев не бывает
![]() есть видеокарта и линейный кусок видепамяти адресс его находится елементарно далее найдя адр начала , логично предположить что достаточно скопировать к примеру 1024*768*3 байт чтоб получить копию LFB которая будет являтся непосредственной частью видео памяти которую мы видим на экране, внеэкранная нас в данный момент не интересует -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 2 Всего: 34 |
p0s0l
совершенно верно при lock получаем адрес на видеопамять но тут есть нюанс ddraw позволяет делать эмуляцию в оперативе, если к примеру мала видеопамяти а нам нада 10 бэкбуферов, оно будет в оперативе хотя в принципе на результат не повлеяет осталось тока залесть в чужой процесс и сделать оттуда lock ![]() предлагаю написать враппер ddraw.dll который по нажатию там каких нить кнопок будет шкрин грабить ![]() -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
p0s0l |
|
||||||||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: нет Всего: 112 |
Можно тогда просто создать любой малюсенный сурфейс в видеопамяти (в dwCaps указав DDSCAPS_VIDEOMEMORY), делаем Lock, получаем адрес сурфейса, далее VirtualQuery выдаст базовый адрес региона (AllocationBase), то бишь начало видеопамяти.
Объясни почему ? Откуда такая уверенность ? Загляни в настройки видеопроигрывателя и ты скорее всего найдешь метод вывода. Например, в Zoom Player: Standart Renderer, Overlay Mixer, Video Mixing Renderer (VMR9). Если выставишь Overlay Mixer (а он выставлен по умолчанию), то при проигрывании фильма PrintScreen будет снимать вместо фильма черноту.
Проигрыватель закрашивает всю клиентскую область окна ключевым цветом оверлея, DirectShow рендерит фильм не на окно проигрывателя, а на невидимый оверлейный сурфейс. Поэтому и в куске видеопамяти, выводимой на экран, хранится только КЛЮЧЕВОЙ ЦВЕТ на месте оверлея, а то, что должно выводится вместо этого ключевого цвета (кадр фильма к примеру), тоже хранится в видеопамяти, но уже в другом куске памяти, и это и есть оверлей. Я себе представляют так: видяха при выводе на монитор читает последовательно видеопамять. Если есть хотя бы один видимый оверлей, она проверяет, входит ли выводимый пиксел в область оверлея, если да, то еще проверят, является ли считанный пиксел ключевым цветом, и если является, то вместо него выводит соотвествующий пиксел оверлея... -------------------- С уважением, г-н Посол. |
||||||||
|
|||||||||
oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 2 Всего: 34 |
p0s0l
шас как тока будет свободная минутка попробую сделать грабилку, (ddraw.dll wrapper) -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: нет Всего: 112 |
oleg1973, почитай, главное выделено, из MSDN:
Т.е. если хочешь делать грабилку, то придётся грабить как ПримариСурфейс, так и Оверлейный Сурфейс... -------------------- С уважением, г-н Посол. |
|||
|
||||
RuslanB |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 21.10.2004 Репутация: нет Всего: нет |
Вы мое спасенье!!!
![]() |
|||
|
||||
Byo |
|
|||
Unregistered |
Нефиг спорить ))
p0s0l абсолютно прав . так что удачи в поисках ). |
|||
|
||||
JoyEx |
|
|||
![]() Дядя ![]() ![]() Профиль Группа: Участник Сообщений: 323 Регистрация: 21.6.2005 Где: Москва, РФ Репутация: нет Всего: 12 |
Касательно Win!!!
![]() Лучше всего иметь у себя PRM (Programmer's Reference Manual) на свою видяху. Например, http://www.intel.com/design/chipsets/manuals/29823701.pdf и затем работать напрямую А если по-умному, то лучше изучить архитектуру работы дисплея и делать драйверок. p0s0l, с Днем Варенья тебя! Это сообщение отредактировал(а) JoyEx - 3.12.2005, 20:02 -------------------- Если ты уже никого не боишься, значит ты самый страшный |
|||
|
||||
JoyEx |
|
|||
![]() Дядя ![]() ![]() Профиль Группа: Участник Сообщений: 323 Регистрация: 21.6.2005 Где: Москва, РФ Репутация: нет Всего: 12 |
И потом, напрямую адрес (>0x80000000) видеопамяти получить можно, а вот вычислить внеэкранную будет намного сложнее. Еще можно вспомнить об основных VGA регистрах, чтобы попытаться сделать что-то нехорошое с видяхой.
-------------------- Если ты уже никого не боишься, значит ты самый страшный |
|||
|
||||
oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 2 Всего: 34 |
ну если в досе все делать то там можно получить данные о установленом видеорежиме и в том же массиве есть адрес (линейный) видеобуффера -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
JoyEx |
|
|||
![]() Дядя ![]() ![]() Профиль Группа: Участник Сообщений: 323 Регистрация: 21.6.2005 Где: Москва, РФ Репутация: нет Всего: 12 |
oleg1973
ДА. shedon Через HDC проще всего сделать и потом сразу забыть о проблеме. В DVD самое ценное это меню, а через видяху DVD-менюшку не сграбить. Если тебе нужно типа VHS, то тогда дерзай! -------------------- Если ты уже никого не боишься, значит ты самый страшный |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Asm для Windows/DOS" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm для Windows/Dos | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |