バックグラウンド
現在のデスクトップをプログラムで拡大する必要があるデスクトップ コンピューター用のアプリケーションを開発しています。拡大された領域のみを表示する必要があります。
使用している言語は C++ で、現在 Ubuntu を実行していますが、将来的には他のプラットフォームでも動作する予定です。
現在のアプローチ
現在のアプローチでは、レンダリング ウィンドウ (RW) が使用されます。レンダリングの反復ごとに、最初に最小化され、XGetImage (X11) を介してデスクトップ イメージ (スクリーンショット) が取得されます。
XImage *image = XGetImage(xDisplay, RootWindow(xDisplay, DefaultScreen(xDisplay)), 0, 0, screenWidth, screenHeight, AllPlanes, ZPixmap);
次に、ズーム領域を提供するために画像が処理され、RW が最大化されてレンダリングされます。
このアプローチは、ズーム処理がなくても、最小化および最大化プロセスのために時間がかかり、リアルタイムで実行できません。
質問
現在のデスクトップのリアルタイム拡大バージョンをどのようにレンダリングできますか?
ズーム ライブラリを提案できますが、それらは効率的である必要があります。つまり、多くの処理を消費せず、コードを介してズーム領域を完全に制御できる必要があります。つまり、マウス/キーボードを必要としません。
特記事項
このアプリの主な焦点は Linux との互換性であるため、Windows に関する回答 (Magnification-API のハウツーなど) は歓迎されますが、正解としては受け入れられません。