Mac OS X で Haskell を使用して画面をキャプチャするにはどうすればよいですか?
Haskell でのスクリーン キャプチャを読みましたか? . しかし、私はMac Miniで作業しています。したがって、Windows ソリューションは適用できず、GTK ソリューションはブラック スクリーンしかキャプチャしないため機能しません。Mac の GTK は黒い画面のみをキャプチャします。
Mac OS X で Haskell を使用して画面をキャプチャするにはどうすればよいですか?
Haskell でのスクリーン キャプチャを読みましたか? . しかし、私はMac Miniで作業しています。したがって、Windows ソリューションは適用できず、GTK ソリューションはブラック スクリーンしかキャプチャしないため機能しません。Mac の GTK は黒い画面のみをキャプチャします。
…と OpenGL で画面をキャプチャするにはどうすればよいですか?
運が良ければ。OpenGL は主に描画 API であり、OpenGL 関数自体によって描画されない限り、メイン フレームバッファの内容は未定義です。OpenGL が悪用される可能性があるのは、グラフィック システムが画面上のウィンドウのフレーム バッファを管理する方法が原因でした。定義済みの背景色/ブラシを持たないウィンドウが作成された後、その最初のフレーム バッファ コンテンツは、ウィンドウの直前に画面上にあったすべてのものでした。創造。この上に OpenGL コンテキストが作成されている場合、glReadPixels を使用してフレームバッファを読み取ることができ、スクリーンショットを作成できます。
現在、ウィンドウの合成は標準になっているため、スクリーンショットを撮るために OpenGL を悪用することはほとんど不可能になっています。合成では、各ウィンドウに独自のオフスクリーン フレーム バッファがあり、画面のコンテンツは最後にのみ合成されます。合成ウィンドウ システムで、必要なコンテンツを含む初期化されていないメモリに依存する上記の方法を使用した場合、結果は無地のクリア カラー、大きく歪んだジャンク フラグメント、データ ノイズなど、大きく異なります。
スクリーンショットを確実に取得するには、これが行われるシステムの多くの特異性を考慮に入れる必要があるため、真にポータブルなスクリーンショット プログラムを作成することは事実上不可能です。
そして、OpenGL は間違いなく間違ったツールです。過去に人々 (私を含む) が OpenGL を悪用できたとしてもです。
これは、Cで解決策を見つけるのに役立つ場合があります。
NeHeProductions-gluUnProjectの使用
http://nehe.gamedev.net/article/using_gluunproject/16013/
Appleメーリングリスト-Re:スクリーンスナップショットのサンプルコードが投稿されました
http://lists.apple.com/archives/cocoa-dev/2005/Aug/msg00901.html
Windows、Linux、OSXでのOpenGLプログラムのコンパイル
http://goanna.cs.rmit.edu.au/~gl/teaching/Interactive3D/2012/compiling.html