2016-07-05 2 views
2

Qt 5.4 버전 이후로 QOpenGLWidget이 OpenGL 렌더링 기능을 사용하기 위해 도입되었습니다.일반 QWidget보다 QOpenGLWidget을 사용할 때의 이점

OpenGL API를 호출하는 것 외에도 QOpenGLWidget을 QPainter가 사용되는 일반 QWidget으로 사용할 수도 있습니다.

내 위젯을 렌더링하기 위해 OpenGL API를 직접 호출하지 않고 QPainter API 만 호출 할 계획이라면 QWidget 대신 QOpenGLWidget을 사용하면 어떤 이점 (성능상 아마도)이 있습니까?

+1

"캐주얼"QPainter를 사용하여 아직 고성능을 보지 못했고 OpenGL API와 함께 QGLWidget을 사용했지만 누가 알 수 있습니까?). 하지만 플랫폼 + 하드웨어 + 드라이버 관련 문제로 혼란 스러울 때는 두 번 생각해야합니다. 위젯이 각 컴퓨터마다 다르게 나타날 수 있기 때문에 더 빠르거나 느릴 수 있으며 오래된 드라이버를 사용하는 오래된 컴퓨터는 새로운 OpenGL 기능을 거부 할 수 있으며 OpenGL은 네트워크 디스플레이 등에 대한 추가 설정이 필요할 수 있습니다. – ilotXXI

+0

따라서 실제로 사용 가능한 동기는 충분하지 않습니다. QOpenGLWidget, 집중적 인 OpenGL 호출이 필요하지 않는 한, 맞습니까? – Wayee

+0

'QOpenGLWidget'의 목적은 OpenGL 씬을 렌더링하기 위해 윈도우 내부에 직사각형 영역을 갖는 것입니다. 'QOpenGLWidget'은 윈도우 ID가있는 특정 리소스 여야하기 때문에 오버 헤드 만 가져 오므로 3D 드라이버와 OS가 직접 사용할 수 있습니다. – Velkan

답변

1

QOpenGLWidgetQPainter을 사용하여 직접 칠한 경우 OpenGL을 사용하는 모든 그림을 그 두 가지 주 목적 중 하나입니다. QOpenGLWidgetQPainter을 사용하면 화가 API를 GL 상태 설정 및 호출로 변환하는 작업을 Qt에서 할 수 있습니다. 일부 OpenGL 백그라운드가 있고 Qt의 디버그 빌드를 사용하는 경우 소스로 추적하여 Qt가 호출을 변환하는 방법을 볼 수 있으므로 효율적으로 OpenGL에 매핑되는 방법으로 화가 호출을 발행 할 수 있습니다. 상태 변경은 비용이 많이 들기 때문에 동일한 펜/브러쉬 등을 사용하는 작업을 일괄 처리해야합니다. 그림은 QOpenGL2PaintEngineEx으로 완료됩니다.

관련 문제