Вернуться   CoderX :: Forums > Основные форумы > Программинг
Войти через OpenID

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 13.06.2012, 11:34   #1
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

Ну я делал както так (других надежных способов ненашол, может и есть).

перехватываем создание интерфейса директх-девайса и при создании добавляем флаг LOCKAВLE_ВACKBUFFER иначе мы не получим к нему доступ. Запоминаем созданый экземпляр.

когда нам нужно получить отрендереный имадж - вызываем метод idirect3ddevice9 возвращающий интерфейс бекбуфера. Там 2 способа считать его - создать hdc и отблитить либо залочить и скопировать массив пикселей.

мб чето я перепутал но суть такая, и у меня работало у меня

Добавлено через 15 минут
Без инжектов хз ваще как получить доступ к буферу в неактивном окне. Контекст окна 1 фиг нам бесполезен.

Добавлено через 33 минуты
Printwindow ясен пень не будет работать так как обращаетса к gdi. Рендеры же работают конкурентно с гди и пересекаютса тока на экранной поверхности. Им пох на то что рисует само окно, а оно обычно в играх ниче не рисует вот, и квадрат малевича.
__________________
читернуть бы ништяг

Последний раз редактировалось mira, 13.06.2012 в 11:34. Причина: Добавлено сообщение
mira вне форума   Ответить с цитированием
Старый 13.06.2012, 14:14   #2
Пользователь
 
Регистрация: 11.03.2011
Сообщений: 73
Сказал Спасибо: 4
Имеет 8 спасибок в 4 сообщенях
Anfet пока неопределено
По умолчанию

Цитата:
Сообщение от mira Посмотреть сообщение
перехватываем создание интерфейса директх-девайса и при создании добавляем флаг LOCKAВLE_ВACKBUFFER иначе мы не получим к нему доступ. Запоминаем созданый экземпляр.
Самое интересное, что этот флаг вообще не гарантирует то, что доступ можно будет получить.
А потом начинается веселье с тем что тебе нужно забрать буфер, а он тоже далеко не всегда (почему-то) может быть доступен.

А вообще мира правду говорит. Неактивное окно не заскринить просто так.
(я уже на этом съел собаку).

Последний раз редактировалось Anfet, 13.06.2012 в 14:17.
Anfet вне форума   Ответить с цитированием
Старый 13.06.2012, 14:17   #3
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию

mira, с помощью твоего метода и в свернутом окне можно получить скрин и оно получит именно новую отрендеренную картинку или последнюю которая рендерилась до сворачивания?
__________________
Продажа чистых аккаунтов 4G, L2 EU, AARu, AA EU, Aion EU, Tera RU, Tera EU (ICQ 594297609)
Продажа VK авторег аккаунтов (ICQ 594297609)
Yegor вне форума   Ответить с цитированием
Старый 13.06.2012, 14:19   #4
Пользователь
 
Регистрация: 11.03.2011
Сообщений: 73
Сказал Спасибо: 4
Имеет 8 спасибок в 4 сообщенях
Anfet пока неопределено
По умолчанию

Цитата:
Сообщение от Yegor Посмотреть сообщение
mira, с помощью твоего метода и в свернутом окне можно получить скрин и оно получит именно новую отрендеренную картинку или последнюю которая рендерилась до сворачивания?
Свернутое окно вообще не рендерится (если мы о ла2).
__________________
l2tracker - самый правильный бот для L2
Anfet вне форума   Ответить с цитированием
Старый 13.06.2012, 14:33   #5
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию

Anfet, может как то можно заставить движок отрендерить кадр как будто бы окно развернуто.
__________________
Продажа чистых аккаунтов 4G, L2 EU, AARu, AA EU, Aion EU, Tera RU, Tera EU (ICQ 594297609)
Продажа VK авторег аккаунтов (ICQ 594297609)

Последний раз редактировалось Yegor, 13.06.2012 в 15:41.
Yegor вне форума   Ответить с цитированием
Старый 13.06.2012, 15:01   #6
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

Цитата:
Сообщение от Anfet Посмотреть сообщение
Свернутое окно вообще не рендерится (если мы о ла2).
угу там вроде экземпляр рендера (3ддевайс) переходит в состояние devicelost и при разворачивании требует переинициализации.

Добавлено через 7 минут
Цитата:
Сообщение от Yegor Посмотреть сообщение
Anfet, может как то можно заставить движок отрендерить кадр как быдто бы окно развернуто.
Устойство переходит в состояние "потеряно" стало быть не может ничего.

Добавлено через 8 минут
Цитата:
Сообщение от Anfet Посмотреть сообщение
Самое интересное, что этот флаг вообще не гарантирует то, что доступ можно будет получить.
А потом начинается веселье с тем что тебе нужно забрать буфер, а он тоже далеко не всегда (почему-то) может быть доступен.

А вообще мира правду говорит. Неактивное окно не заскринить просто так.
(я уже на этом съел собаку).
1)если адаптер не поддерживает запираемый бекбуфер
2)если пытатса его захватывать не синхронно а например между beginscene и endscene скорей всего будет фейл.
В идеале его захватывать перед самим методом present.

ну и да...
Начиная с висты немного поменялась идеология оконых контекстов. Там принт возможно прокатит.
__________________
читернуть бы ништяг

Последний раз редактировалось mira, 13.06.2012 в 15:01. Причина: Добавлено сообщение
mira вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Программинг



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 21:24.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!