2016-11-07 11 views
2

우리는 EGLFS를 사용하여 X 서버가없는 임베디드 리눅스 장치에서 QML 응용 프로그램을 실행합니다. 따라서 스크린 샷을 가져 오는 데 일반적인 기술 (예 : 스크린 샷 유틸리티 앱 사용)을 사용할 수 없습니다. In this questionQQuickView::grabWindow()을 사용하는 기술을 발견했습니다.Qt : EGLFS 창의 스크린 샷 찍기 - 픽셀 완벽한 결과?

내 질문 : 픽셀 완벽한 사용자가 화면에서 보는 것과 동일하게 보장이 함수의 결과인가? 나는 창 내용을 잡아 것을 걱정는 Qt는 결과가 차이가 발생할 수 있습니다 다른 코드 경로 (예를 들어, 렌더링 - 투 - 질감)를 사용하여 윈도우를 다시 쓰게 할 수도 있습니다.

는 나도 답에 포함 된 신뢰할 수있는 참조를하고 싶습니다.

+0

당신은 "응용 프로그램에서 색상이"사용자가 화면에서 보는 것과 일치하는지 확인하는 방법을 묻는? A *의 huuuuuge는 * 그런 측면에서 문학의 양 ... – peppe

+0

@peppe 거기 때문에 : 아니, 내가 창에서 픽셀 데이터를 동일하게 얻을 grabWindow', 나는 픽셀 데이터를 원하는'전화, 동일한 데이터있는 사용자에게 표시됩니다. 나는. 창에있는 것을 별도로 렌더링 한 "꽤 가깝게"표현한 것이 아닙니다. –

답변

1

는 지금까지 내가 말할 수있는 스크린 샷은 동일 될 수 없습니다. QQuickWindow::grabWindow의 코드를 따라 가면 qt_gl_read_framebuffer으로 전화를 걸며 항상 이미지를 RGB (A) 8로 읽습니다. 실제 프레임 버퍼는 다를 수 있습니다 (예 : RGB565 일 수 있음). 에 따라

(... 나는 또한 하나는 RGB565 프레임 버퍼에서 glReadPixels를 통해 RGBA 읽기를 사용할 수 없다는 것을 기억하는 것,하지만 난 그 모든 OpenGL을 버전/변종에 사실 100 % 확실하지 않다)

당신의 드라이버, 해결 방법은 /dev/fb0 내용을 읽을 수 있습니다. 아무튼이 기능이 필요한 경우 bug report을 제출하십시오.