2012-08-05 4 views
1
  1. OpenGL을 지원하는 Q11 용 Qt는 어떻게 만들 수 있습니까? 내 장치 (GPU)에 하드웨어 가속 기능이 있지만 OpenGL과 작동하도록 qt (qml) 응용 프로그램을 구성 할 때 성능이 향상되지 않습니다 ... 성능이 저하됩니다. QApplication::setGraphicsSystem("opengl");

    QT X11 및 OpenGL

    내가 사용하는 Qt는 등대 (QT하지 임베디드 리눅스) :

나는 명령을 사용합니다.

  1. Qt가 실제로 화면에서 qt/qml 위젯을 그리기 위해 gpu 가속을 사용하도록하려면 어떻게해야합니까?

답변

1

Qt가 /usr/lib[64]/libGL.so (또는 라이브러리 경로의 libGL.so)에 대해 동적으로 링크되도록하십시오. 다른 libGL.so, 정적 링키지 또는 libMesaGL과의 연계 {so, a}는 시스템에서 HW 가속을 사용하지 않고 OpenGL의 소프트웨어 래스터 라이저 구현을 프로그램에 적용 할 가능성이 높습니다. 또한 시스템이 실제로 HW 가속화 된 OpenGL을 지원하는지 확인하십시오.

glxinfo | grep renderer이 어떤 래스터 화기를보고하면 software은 가속화되지 않습니다. 인 경우간접적 인은 HW 가속에 대해 아무런 언급이 없습니다. Indirect는 OpenGL 명령이 X11 요청으로 캡슐화되어 서버를 거치지 않고 OpenGL 구현에 직접 전달되는 대신 X11 서버를 통해 전송된다는 것을 의미합니다.

+0

OpenGL 라이브러리에 링크 된 Qt 응용 프로그램입니다. 컴파일 결과는 -lgsl -lgsl-fsl -lEGL -lGLESv2 -lEGL -lGLESv2 -lgsl -lEGL -lGLESv2 -lgsl -lQtOpenGL .... 등의 줄을 포함합니다. 따라서 연결은 괜찮습니다. – user1335880

+0

OpenGL-ES를 연결하고 있습니다. 이것은 X11과 함께 사용하면 이해가되지 않습니다. 연결 문자열은 보통'-lGL -lQtOpenGL'이어야하지만 EGL이나 ES 라이브러리를 포함하지 않습니다. 왜냐하면 그것들은 대개 SW 래스터 라이저를 사용하기 때문입니다. – datenwolf

+0

응용 프로그램이 임베디드 시스템에서 실행되므로 이것이 연결이 EGL에 연결되는 이유입니다 ... – user1335880