作者:qyvlik
鏈接:http://www.zhihu.com/question/38867614/answer/78583440
來源:知乎
著作權歸作者所有,轉載請聯系作者獲得授權。
鏈接:http://www.zhihu.com/question/38867614/answer/78583440
來源:知乎
著作權歸作者所有,轉載請聯系作者獲得授權。
做UI啊。如果是桌面應用,QML可以更快速。如果是手機UI,H5絕對占優。
畢竟Qt提供的那一套控件庫更適合桌面應用,而當年諾基亞都開發了塞班和米果的QML手機控件庫,現在Ubuntu,旗魚,黑莓都有自己的QML手機控件庫。
渲染性能上。QML有絕對統一的接口規范以及渲染機制。(跨平台是這樣的)。 H5桌面系統一套,就谷歌做的好。手機WebKit嗯,但是系統對WebKit的支持也不能說表現一樣。
接下來我來說說QML吧。 QML的執行引擎是基於Qt的V4引擎,V4最大的改變就是添加了類型。(有關源碼分析,請移步 qtdeclarative 源碼略讀)添加了類型讓QML的屬性綁定相比於之前的版本(Qt4的QtQuick 1.x)有極其大的提升。 屬性綁定(數據綁定,表達式綁定)。嗯,在QML中隨處可見的屬性綁定,雖然有H5中有類似數據綁定的JS庫。但QML語法上就支持了。
QML的渲染方式相較於之前的版本也有了重大的更新。 之前的版本(Qt4的QtQuick 1.x)更接近widget,雖然是Griphics/view,但是渲染更多是優先提交給cpu處理。當然,在N9(嗯,第一個完全使用QML構造應用的系統),會使用gpu,有硬件加速嘛。
現在的QML渲染方式更傾向於優先使用顯卡。(所以現在使用QML需要良好的顯卡支持,例如正確安裝顯卡驅動)。
簡單扯扯現在QML的渲染繪制機制吧。
1. 基於事件的,基於Griphics/secen
2. 有兩個線程,一個繪制,一個渲染。
3. cpu負責繪制,gpu負責渲染。
4. 當需要重繪時,繪制線程暫停,渲染線程進行渲染,渲染完畢,繪制線程啟動,繪制。
嗯,上面那個我是看Qt英文文檔,自己理解的,敘述有出入。 此外,Qt正在開發的Qt3D,類比WebGL,其性能以及可部署性遠大於H5的WebGL,嗯,是個重型武器。其實也反應出了QML渲染和繪制的效率。
畢竟Qt提供的那一套控件庫更適合桌面應用,而當年諾基亞都開發了塞班和米果的QML手機控件庫,現在Ubuntu,旗魚,黑莓都有自己的QML手機控件庫。
渲染性能上。QML有絕對統一的接口規范以及渲染機制。(跨平台是這樣的)。 H5桌面系統一套,就谷歌做的好。手機WebKit嗯,但是系統對WebKit的支持也不能說表現一樣。
接下來我來說說QML吧。 QML的執行引擎是基於Qt的V4引擎,V4最大的改變就是添加了類型。(有關源碼分析,請移步 qtdeclarative 源碼略讀)添加了類型讓QML的屬性綁定相比於之前的版本(Qt4的QtQuick 1.x)有極其大的提升。 屬性綁定(數據綁定,表達式綁定)。嗯,在QML中隨處可見的屬性綁定,雖然有H5中有類似數據綁定的JS庫。但QML語法上就支持了。
QML的渲染方式相較於之前的版本也有了重大的更新。 之前的版本(Qt4的QtQuick 1.x)更接近widget,雖然是Griphics/view,但是渲染更多是優先提交給cpu處理。當然,在N9(嗯,第一個完全使用QML構造應用的系統),會使用gpu,有硬件加速嘛。
現在的QML渲染方式更傾向於優先使用顯卡。(所以現在使用QML需要良好的顯卡支持,例如正確安裝顯卡驅動)。
簡單扯扯現在QML的渲染繪制機制吧。
1. 基於事件的,基於Griphics/secen
2. 有兩個線程,一個繪制,一個渲染。
3. cpu負責繪制,gpu負責渲染。
4. 當需要重繪時,繪制線程暫停,渲染線程進行渲染,渲染完畢,繪制線程啟動,繪制。
嗯,上面那個我是看Qt英文文檔,自己理解的,敘述有出入。 此外,Qt正在開發的Qt3D,類比WebGL,其性能以及可部署性遠大於H5的WebGL,嗯,是個重型武器。其實也反應出了QML渲染和繪制的效率。