2016-11-07 17 views
2

EGLFSを使用して、Xサーバーなしで組み込みLinuxデバイスでQMLアプリケーションを実行しています。だから、スクリーンショットを取得するための通常のテクニックを使用することはできません(たとえば、スクリーンショットユーティリティアプリを使用して)。 In this questionQQuickView::grabWindow()を使用する技術が見つかりました。Qt:EGLFSウィンドウのスクリーンショットを取る - ピクセル完全な同じ結果?

私の質問:この機能の結果は、ユーザーが画面上で見るものと完全に同じであることが保証されていますか?私はウィンドウの内容を取得することが心配です、Qtは異なるコードパス(例えば、レンダリングからテクスチャ)を使用してウィンドウを再レンダリングする必要があり、結果が異なる可能性があります。

回答にも信頼できる参照が必要です。

+0

"アプリケーションの色"がユーザーの画面に表示されることを確認する方法を尋ねていますか?その点で文法は* huuuuuge *という量なので... – peppe

+0

@peppe:いいえ、私は 'grabWindow'を呼び出すと、私はウィンドウ内のピクセルデータと同じになるピクセルデータ、ユーザに提示される。私。ウィンドウに何が表示されているのかを別に表現した「かなり近い」表現ではありません。 –

答えて

1

私が知る限り、スクリーンショットは同一ではありません。 QQuickWindow::grabWindowのコードに従ってください:qt_gl_read_framebufferが呼び出されますが、これは常にイメージをRGB(A)8として読み出すことになります。あなたの実際のフレームバッファは異なるかもしれません(例えば、RGB565でもかまいません)。

(...私はまた、1つは、RGB565のフレームバッファのうち、glReadPixelsを経由して読んでRGBAを使用できないことを覚えているようだが、私はそれがすべてのOpenGLのバージョン/バリアントに本当の100%を確認していない)

あなたに応じて、回避策は/dev/fb0の内容を読み取っている可能性があります。この機能が必要な場合は、とにかく、bug reportを提出してください。

関連する問題