Нет простого Windows API для изменения всего содержимого экрана.Но это может быть сделано на уровне драйвера устройства.
В противном случае вам придется прибегнуть к некоторым хитростям Windows API: поместите «поддельное» окно на весь рабочий стол, в цикле: захватите все содержимое экрана без захватаПоддельное содержимое окна, выполните обработку, чтобы получить монохромный эффект, а затем отобразите его в поддельном окне.Да, это нахально и медленно, но возможно.Еще более неприятно, когда вы получаете щелчки мышью, чтобы «пройти» поддельное окно (много вызовов SetWindowsRgn
).
Так что кросс-платформенность здесь означает использование GDI, хотя некоторые более старые API DirectDraw могут работать, вВ этом случае вам будет намного проще с аппаратными оверлеями (и лучшей производительностью).Хотя я не уверен, сколько карт на самом деле поддерживают аппаратные оверлеи, и если более новые версии Windows поддерживают более старые API DirectDraw.
Еще одна возможность состоит в том, если видеокарта имеет API C # или C ++ или C, тогдаВы можете делать с картой все, что хотите, без написания кода драйвера устройства.
Тогда есть CUDA, но я еще не пробовал это.Я знаю, что она предназначена для потоковой обработки на платах nVidia, но мне интересно, может ли она помочь вам с легким задним ходом при просмотре видео.