Difference between revisions of "Template:FriendlyCoreRK3399QtDev"

From FriendlyELEC WiKi
Jump to: navigation, search
(开发Qt程序)
(Develop Qt Application)
Line 1: Line 1:
 
===Develop Qt Application===
 
===Develop Qt Application===
FriendlyELEC为RK3399平台移植的 Qt 5.10.0 支持以下显示设备插件:KMS、EGLFS和XCB,这三种插件均支持OpenGL ES和GPU硬件加速,只是调用方式不同,具体如下:<br>
+
The Qt 5.10.0 FriendlyELEC ported for RK3399 supports the following plug-ins:KMS, EGLFS and XCB. All these three plug-ins support OpenGL ES and GPU hardware acceleration but in different ways:<br>
* KMS – 使用Linux内核的DRM显示接口来渲染界面<br>
+
* KMS - it calls Linux kernel's DRM interface to display<br>
* EGLFS – 使用OpenGL ES接口来渲染界面<br>
+
* EGLFS - it calls OpenGL ES interface to display<br>
* XCB – 在X11服务器上运行,并集成到X11窗口环境<br>
+
* XCB - it runs on X11 server and is integrated in X11 windows system<br>
 
<br>
 
<br>
三种插件所支持的Qt特性会有所不同,请根据你的需求来选择: <br>
+
Three plug-ins support different Qt features and here is a table: <br>
 
::{| class="wikitable"
 
::{| class="wikitable"
 
|-
 
|-
   | 插件名称
+
   | Plug-in
 
   | OpenGL ES
 
   | OpenGL ES
 
   | QtWebEngine
 
   | QtWebEngine
 
   | QtMultimedia
 
   | QtMultimedia
   | 视频硬解播放
+
   | Video Playing with Hardware Decoding
   | 双屏异显
+
   | Different Display
 
|-
 
|-
 
   | KMS
 
   | KMS
Line 36: Line 36:
 
   | <b>Yes</b>
 
   | <b>Yes</b>
 
|}
 
|}
<b>建议使用 KMS或XCB 插件。</b><br><br>
+
<b>We recommend to use KMS or XCB.</b><br><br>
为了方便用户测试,FriendlyCore平台提供了4个脚本文件用于设置Qt环境变量,分别为:
+
FriendlyCore has four scripts for setting Qt environmental variables for users and here is a table:
 
::{| class="wikitable"
 
::{| class="wikitable"
 
|-
 
|-
|脚本文件名||作用
+
|Script||Comment
 
|-
 
|-
|/usr/bin/setqt5env-kms||设置kms插件所需要的环境变量
+
|/usr/bin/setqt5env-kms||set kms' environmental variables
 
|-
 
|-
|/usr/bin/setqt5env-eglfs||设置eglfs插件所需要的环境变量  
+
|/usr/bin/setqt5env-eglfs||set eglfs' environmental variables  
 
|-  
 
|-  
|/usr/bin/setqt5env-xcb||设置xcb插件所需要的环境变量
+
|/usr/bin/setqt5env-xcb||set xcb's environmental variables
 
|-  
 
|-  
|/usr/bin/setqt5env-nogui||仅供无界面的Qt程序使用
+
|/usr/bin/setqt5env-nogui||set environmental variables for a system without a Qt GUI
 
|}
 
|}
例如要设置用KMS插件来显示程序界面,可以使用以下命令:
+
For instance, if you want to use KMS to display you can run the following commands:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
. setqt5env-kms
 
. setqt5env-kms
 
./apps
 
./apps
 
</syntaxhighlight>
 
</syntaxhighlight>
(注: .与字母s之间有个空格)
+
(Note:there is a space between '.' and 's')
  
 
====Qt开发环境搭建====
 
====Qt开发环境搭建====

Revision as of 15:20, 29 July 2018

1 Develop Qt Application

The Qt 5.10.0 FriendlyELEC ported for RK3399 supports the following plug-ins:KMS, EGLFS and XCB. All these three plug-ins support OpenGL ES and GPU hardware acceleration but in different ways:

  • KMS - it calls Linux kernel's DRM interface to display
  • EGLFS - it calls OpenGL ES interface to display
  • XCB - it runs on X11 server and is integrated in X11 windows system


Three plug-ins support different Qt features and here is a table:

Plug-in OpenGL ES QtWebEngine QtMultimedia Video Playing with Hardware Decoding Different Display
KMS Yes No Yes No Yes
EGLFS Yes No Yes No No
XCB Yes Yes Yes Yes Yes

We recommend to use KMS or XCB.

FriendlyCore has four scripts for setting Qt environmental variables for users and here is a table:

Script Comment
/usr/bin/setqt5env-kms set kms' environmental variables
/usr/bin/setqt5env-eglfs set eglfs' environmental variables
/usr/bin/setqt5env-xcb set xcb's environmental variables
/usr/bin/setqt5env-nogui set environmental variables for a system without a Qt GUI

For instance, if you want to use KMS to display you can run the following commands:

. setqt5env-kms
./apps

(Note:there is a space between '.' and 's')

1.1 Qt开发环境搭建

FriendlyELEC为RK3399平台提供了两种交叉编译Qt程序的方法:

1.2 Qt示例演示

FriendlyCore系统内置了几个很有特色的Qt演示程序,方便测试Qt5的特性,下面分别介绍它们:

  • Qt QML示例:CinematicExperience

CinematicExperience是一个用Qt QML实现的影片选择界面。
该例子使用了Qt QML中的界面动态转换、粒子模拟和着色器特效,所以这个示例能体现RK3399的硬件性能与软件优化,在RK3399平台上非常流畅。
在命令行执行以下命令启动该示例:

cd /opt/Qt5_CinematicExperience
./run.sh

界面如下所示:
Cinematicsexperience.jpg

  • QQt WebEngine示例:网页浏览器

Qt WebEngine使用了Chromium作为渲染引挚,对HTML5支持完美。
示例展示的网页浏览器是 Qt5 自带的Demo,运行命令如下:

cd /opt/qt5-brower
./run.sh

界面如下所示:
Qt5-brower.jpg

注:Qt WebEngine在FriendlyCore平台上需要使用Xcb插件来运行。

  • Qt 双屏异显示例

这是一个比较简单的DEMO,演示了在同时连接HDMI和eDP LCD屏的情况下,用Qt实现两个屏幕显示不同的内容, 用以下命令启动:

cd /opt/qt5-multi-screen-demo
./run.sh

双屏异显的效果如下所示:
Qt5-multi-screen.jpg

  • Qt Multimedia: 硬解播放器qt5-player

qt5-player播放器已经适配Rockchip的gstreamer插件,支持4K视频的硬解播放,由于Rockchip提供的插件只支持输出图像到X11窗口,因此 Qt 播放器程序需要使用 XCB 的显示插件来运行。
在命令行执行以下命令启动该示例:

cd /opt/qt5-player
./run.sh

播放器的界面如下所示,可以设置全屏播放,也可以调节音量:
Qt5-player.gif

  • Qt WebGL示例: nmapper

Qt WebGL允许你在其他设备的网页游览器查看并远程操作运行在开发板上的Qt程序,这个特性使得实现远程控制变得简单。
在运行示例之前,你的开发板需要先连接网络,然后在开发版本执行以下命令:

cd /opt/qt5-nmapper
./run-with-webgl.sh

然后在电脑或者手机上打开网页游览器,在浏览器的地址栏输入开发板的IP地址,应该就能看到Qt界面了,效果如下所示:
Qtwebgl.gif

  • Qt VNC示例: 智能家居控制界面

Qt VNC允许你将一个应用程序以VNC Server的形式运行,在其他设备上可以使用VNC Client来连接和控制,用QtWidgets或者QML编写的应用都是支持的。
执行以下命令启动:

cd /opt/qt5-smarthome
./run-with-vnc.sh

然后在电脑或者手机上安装并打开VNC viewer软件,输入开发板的IP地址加端口号5900,例如开发板的地址是192.168.1.100,就输入192.168.1.100:5900,连接后应该就能看到界面了,如下图所示:
Qt5smarthomevnc.png