Программирование direct X и D3D
У меня есть к вам такой вопросик :
есть ли такая возможность - написать 2 независимых приложения которые бы выводили информацию на общую surface, одно приложение работает в D3D или OGL или D2D, а второе приложение например подрисовывает какой нибудь ярлычок в углу экрана (как индикация режима в драйверах, есть там такой флажок в настройках) ?
Желательно примерчик на assm.
На скорость плевать, главное теория, а на практике можно и поэкспериментировать.
Вообще есть такая программка - statwin, она может выводить свои часы поверх игр OGL DD D3D, не всегда правда хорошо, но это зависит в конкретном случае лишь от частоты обновления окна часов (прим. 1 сек.) Из-за этого в играх активно перерисовывающих экран часы вспыхивают и сразу затираются игрой
On 2002-03-03 1058, Anonymous wrote
А каким это способом ??
На скорость плевать, главное теория, а на практике можно и поэкспериментировать.
Вообще есть такая программка - statwin, она может выводить свои часы поверх игр OGL DD D3D, не всегда правда хорошо, но это зависит в конкретном случае лишь от частоты обновления окна часов (прим. 1 сек.) Из-за этого в играх активно перерисовывающих экран часы вспыхивают и сразу затираются игрой
Я думаю потому и затирает, что она просто в TOPMOST окне эти часики выводит.
А насчет способа
в постановке задачи "2 процесса рисуют в один ddsurface(hglrc/hdc) неважно"
Идея 1(работает медленно и не всегда).
~~~~~~~
можно организовать передачу инфы из одного процесса в другой, любым IPC средством Windows, и полученную инфу отображать.
Но это реально, если автор обоих процессов ты сам
Идея 2 (работает всегда, но требует много рутинной работы).
~~~~~~~
Подсунуть, скажем, opengl32.dll, в директорию процесса. А эта opengl32.dll на самом деле твоя, которая делает все как старая (просто вызывая её) И ЕЩЕ добавляет логотипчик, после SwapBuffers()
On 2002-03-05 0627, Ramzes wrote
А типа видеопамять это не расшаренная область памяти в которую можно пихать что угодно...
А я это и не предлагал...
On 2002-03-05 1459, ukms[z] wrote
С библиотекой OGL идея прекрасная, я бы так и поступил, но вот незадача - если я хочу сделать что-то типа remindera органайзера иными словами выводить ярлычок в углу экрана тогда когда мне нужно, а не всегда. С OGL возни много. А вот насчет TOPMOST уже ближе, может сделать частоту обновления повыше, а само окно меньше ? Можете помочь с примерчиком ?
Избежать моргания в общем виде, не удастся однозначно. Моргание будет всегда если мы сначала что-то рисуем а потом затираем в front буффере.
И частоту обновления окна поднять безболезненно тоже не удасться во-первых WM_TIMER в очереди всегда только один, а во вторых загружать проц на 100% ремайндером это не катит.
Ремайндер в TOPMOST это реал, но вот а не GDI приложениях он будет моргать.
Как работают программы делающие скриншот из игр OGL D3D и DD ? Ведь они как-то читают содержимое видеопамяти. А раз можно читать, то и писать не проблема !