Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Вывод на монитор (через АПИ, порты или ассемблер) (http://forum.oszone.net/showthread.php?t=156541)

hackroute 10-11-2009 12:32 1266551

Вывод на монитор (через АПИ, порты или ассемблер)
 
подскажите ссылочку на информацию каким образом можно через порты или ассемблер или АПИ выводит сразу на монитор: мне необходимо дорисовать быстро сменяющиеся кадры к десктопу, чтобы небыла заметна перерисовка, ибо это оч сильно глаз мучает,

помниться была такая прога по изучению английского называлась что-то типо "быстрое изучение английского - 25й кадр", там конечно никакого 25го кадра небыло, и программа рисовала кадры на своей форме, мне же надо сделать примерно тоже самое только чтобы рисовала на экране(десктопе) и был фактическим 25м кадром то есть мне надо заменять каждый 25й-30й или еще какой-нить кадр на собственный, при использовании например Tcanvas.handle = getdc(0); перерисовка довольно долгая и постоянное мерцание рабочего стола довольно таки раздражительная вещь, поэтому и подумалось о возможности напрямую заменять кадр выводимый на монитор через порты асм и АПИ

pva 10-11-2009 15:10 1266658

как правило высокая скорость смены кадров достигается использованием наиболее удобной для отрисовки памяти, а затем просто копированием результата на экран во время перехода сканирующего луча экрана от последнего пикселя к первому. В это время изменений на экране нет, а операция копирования происходит достаточно быстро. При этом рисовать на скрытом экране можно хоть час.
А вот с 25 или 30 кадром может не получиться. Дело в том, что на обычном ЖК мониторе недостаточно скорости переключения пикселей для эффекта 25 кадра. Всё равно текст будет заметен. В быстром изучении английского используется другой эффект - бинауреальные ритмы, когда за счёт внешнего периодического воздействия на зрительный нерв определённой частоты пытаются достигнуть резонансного ответа ЭКГ мозга, соответсвующей состоянию сосредоточенности. А слово 25 - чисто маркетинговый ход.

BlackEric 10-11-2009 22:16 1267047

Смотрите в сторону технологий применяемых в играх.

hackroute 11-11-2009 00:52 1267155

Цитата:

Цитата pva
как правило высокая скорость смены кадров достигается использованием наиболее удобной для отрисовки памяти »

проблема именно в том что смещение видео-буфера в памяти я и незнаю, и вот ищу может кт ознает где он есть (если в доc было что то типо в ES, 0B800h)

pva 11-11-2009 07:09 1267230

я в досе не знаю, но в сейчас в directX принято понятие swap chain, последовательность видеобуферов, которые будут отображаться на экран во время сигнала вертикальной синхронизации на экране (этот флаг устанавливается при инициализации адаптера).
И ещё: вот у вас какая видюха? у меня аппаратно поддерживает много полезных функций рисования и отображения текста. Кроме того поддерживается линейная модель памяти. В общем, я склоняю в сторону DX

hackroute 12-11-2009 16:44 1268501

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

BlackEric 12-11-2009 23:48 1268872

Стандартными средствами вы такое не сделаете. Это только если пытаться перехватывать вывод драйвера видеокарты...

Admiral 14-11-2009 15:42 1270123

Цитата:

Цитата hackroute
если будет висеть окно (даже прозрачное) то я несмогу с рабочим столом ничего делать »

Если оно будет лишь прозрачным - то нет, но если сделать ещё и сквозным, то можно будет работать и с окнами расположенными за ним
Создание "сквозной" формы средствами WinAPI

hackroute 14-11-2009 19:16 1270324

спасибо за подсказку, возможно сквозное окно поможет, сча опробую... (просто думал что есть какие то другие способы, но который раз убеждаюсь что без АПИ невозможно писать) ,а насчет перехвата потока на видео карту это интересно, возможно знаешь ссылки какие нить на подобную инфу?

Admiral 15-11-2009 00:37 1270531

hackroute, с железом на таком уровне не приходилось работать.
На счёт ссылок, то вот недавно наткнулся в MSDN на такое - Direct2D
Сам не пробовал.

hackroute 16-11-2009 01:39 1271400

Цитата:

Цитата Admiral
hackroute, с железом на таком уровне не приходилось работать.
На счёт ссылок, то вот недавно наткнулся в MSDN на такое - Direct2D
Сам не пробовал. »

спасибо за ссылочку конечно но я работаю в ХР так что не подходит

сквозное окно неполучается , есть проблема с пересылкой сообщений, SendMessage PostMessage DefwindowProc CallWindowProc не пересылают сообщения либо я неправильно их остылаю
подскажите как тут быть, делаю так:

postmessage(wnd,msg,wp,lp); / Sendmessage(wnd,msg,wp,lp); / defwindowproc(wnd,msg,wp,lp); / callwindowproc(pointer(getwindowlong(wnd,GWL_WNDPROC)),wnd,msg,wp,lp);
может быть надо писать сразу в пул сообщений или еще что...

Admiral 16-11-2009 02:17 1271412

hackroute, их отсылать не надо. В программе надо организовать цикл их приёма в главной функции
Код:

while(GetMessage(&msg, NULL, 0, 0) > 0)
{
        TranslateMessage (&msg);
        DispatchMessage (&msg);
}
»

А обрабатывать в оконной функции
Код:

LRESULT CALLBACK WindowFunc(HWND hWnd,UINT message,
                        WPARAM wParam,LPARAM lParam)
{
        switch (message)
        {
        //...
        case WM_DESTROY:
                PostQuitMessage (0);
        break;
        default:
                return DefWindowProc (hWnd, message, wParam, lParam);
        }
        return 0;
}»



Время: 07:10.

Время: 07:10.
© OSzone.net 2001-