1. 程式人生 > >Qt:終於來了!基於QML和WebGL開發網頁端

Qt:終於來了!基於QML和WebGL開發網頁端

序言

Qt早在今年2月,就釋出了WebGL相關的blog
http://blog.qt.io/blog/2017/02/22/qt-quick-webgl-streaming/
並且預計5.10加入這個feature

10個月過去了,Qt在12月7號如約釋出了5.10,其中包含了WebGL的外掛

一開始沒反應過來,過了好幾天才想起來這件事,於是乎馬上行動起來,來當下小白鼠。

關於WebGL和QML

基於Qt的QML,繼承了Qt強大的跨平臺能力。而OpenGL/ES,更是為QML提供了強大的底層,讓QML開發的程式可以使用GPU加速。擺脫傳統基於CPU去渲染的程式中各種弊端。
但是傳統OpenGL/ES,意味著QML開發的程式要以“程式”的方式存在,而如今新的WebGL的擴充套件意味著QML開發的程式可以直接在到瀏覽器中使用。
ps:WebGL底層也是OpenGL/ES,請注意區分

但是,可以在瀏覽器中使用不意味著程式是跑在瀏覽器上的。
準確的說,程式邏輯任然執行在本地,在Windows上就是以exe形式存在。而渲染,則是在瀏覽器中的WebGL進行。

而二者的工作方式,官方是這樣描述的:

The application running on a remote computer will serialize all GL calls to binary data and sends it using the web socket connection.
The local browser will send the event (mouse, touch or
keyboard) to the remote application, so user interaction is allowed. Even multi-touch support! (up to 6 fingers):

也就是說,GL的呼叫會由程式端發起,通過web socket傳送給瀏覽器,讓瀏覽器呼叫WebGL進行渲染。
而滑鼠、觸控和鍵盤這類事件,則是通過瀏覽器接收,再發送給程式端處理。

另外這也意味著,用這個的方式在瀏覽器中訪問QML程式,一次也只有一個例項化的物件。換句話說一個程式只能服務於一個瀏覽器的瀏覽,不支援多個瀏覽器同時訪問。

環境配置

系統:Ubuntu 17.04 64bit
Qt:qt-everywhere-src-5.10.0.tar.xz

我的系統中沒有單獨安裝的Qt,環境比較純淨,安裝好系統後就update/upgrade,還有安裝了一些編譯要用的包,然後就去編譯Qt了。

我的配置引數如下:

./configure -prefix "/usr/local/qt/qt5.10.0" -release -qt-sqlite -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl es2 -opensource -confirm-license -nomake tools -nomake examples -nomake tests -skip qt3d -skip qtcanvas3d -skip qtcanvas3d -skip qtdatavis3d -skip qtlocation -skip qtwayland -skip qtwebchannel -skip qtwebengine -skip qtwebview -skip qtwinextras

注意:-opengl es2是一個重要的配置引數,要使用WebGL的話必須是es2

另外我這裡直接執行會少字型,所以我手動拷貝了一個字型到:/usr/local/qt/qt5.10.0/lib/fonts

執行

我運行了Qt的一個示例,名字是calqlatr,在Ubuntu下直接執行效果是這樣的:
這裡寫圖片描述

找到編譯好的二進位制檔案,使用以下引數在終端執行

./calqlatr -platform webgl:port=12345

輸入回車執行程式,然後在瀏覽器中直接訪問就行了。

也就是說對於這個程式,無需對原始碼做任何修改,只需要在執行時指定platform為webgl即可支援在瀏覽器中使用。

開啟瀏覽器中,根據IP和監聽的埠,輸入 http://10.0.1.77:12345 進行訪問,效果如下:

macOS中Safari:
這裡寫圖片描述

iPhone中Safari:
這裡寫圖片描述

iPad中Safari:
這裡寫圖片描述

Windows中Chrome:
這裡寫圖片描述

Ubuntu中Firefox:
這裡寫圖片描述

怎麼樣,如果覺得用這些瀏覽器還是不給力,畢竟現在很多人都是微信和支付寶來瀏覽一些H5頁面。那麼:

iOS微信端:
這裡寫圖片描述

iOS支付寶端:
這裡寫圖片描述

微信和支付寶,也是沒有問題的。

ps:以上所有網頁和瀏覽器,我沒有做過任何相容性適配,比如說佈局、大小、字型、動畫等。我只是把一個普通的QML應用,直接以platform webgl方式啟動。

總結

WebGL目前仍然是一個技術預覽狀態(目前是Qt5.10.0),肯定達不到產品級效果,穩定性、效能和各種細節也欠佳。

在我實驗的幾次中,就出現了崩潰的問題。有的瀏覽器也打不開,比如說Windows下的Edge,開啟直接就是黑的,也沒提示。

這些方面,只能說期待Qt在後面一步步完善,相信肯定可以越做越好的。

感嘆,Qt這一次真的是走了一大步,填補了一片空白,可以說Qt做跨平臺,終於跨到了瀏覽器這個平臺上面。

沒想到我這個學C++的人,竟然可以依靠QML去開發網頁了。

相關推薦

Qt終於基於QMLWebGL開發網頁

序言 Qt早在今年2月,就釋出了WebGL相關的blog http://blog.qt.io/blog/2017/02/22/qt-quick-webgl-streaming/ 並且預計5.10加入這個feature 10個月過去了,Qt在12月7號如約

共享飛機終於但想普及並不是短時間的事兒

共享飛機共享經濟發展的速度、廣度和深度等,都足以讓業界和大眾瞠目結舌。既有共享單車、共享出行等已經凸顯自身潛力的共享項目,也有共享籃球、共享健身倉、共享雨傘等聚焦於小眾群體的形式。而迅猛發展的共享經濟似乎也變成了奪人眼球的“噱頭”,朝著匪夷所思的方向房展。共享寶馬、共享法拉利之後,共享飛機也終於出現了!就在九

程式設計師4月書訊Angular

3月書訊中獎名單: 小棒棒《學習敏捷:構建高效團隊》 鎮屌的技術之路《學習敏捷:構建高效團隊》 阿基米東《Scratch少兒趣味程式設計2》 民團司令《追蹤引力波》 JOHNEW《演算法圖解》 中獎通知由CSD

市值蒸發4460億美元、股價下跌10%,蘋果泡沫終於

    港股解碼,香港財華社原創王牌專欄,金融名家齊聚。看完記得訂閱、評論、點贊哦 以美股為科技股代表的蘋果公司,週四股價下跌近10%,報142.19美元,一夜市值蒸發近750億美元。       不過此次下跌

漫畫 | 小白也能看懂的量子物理漫畫終於

選自 Medium & analyticsvidhya 費米和玻色是兩位著名的物理學家,

2017 Google 開發者大會終於

閱讀文字大概需要 2.8 分鐘。 Google 開發者大會 (Google Developer Days,簡稱 GDD) 是一個互動交流的全球盛會,旨在與開發者們和科技行業領先者們分享 Go

Mask R-CNN官方實現“又”基於PyTorch,訓練速度是原來2倍

曉查 發自 凹非寺量子位 報道 | 公眾號 QbitAI來自官方的Mask R-CNN實現終於“

淘寶租房哪些行業職業會“痛哭流涕”?

淘寶租房房價,對幾乎所有人來說,都是心中的痛。雖然各種限制政策層出不窮,但房價還是蹭蹭蹭地網上漲,讓大眾難以承受。因此,對很多漂泊在外務工、上班的人來說,租房幾乎成為唯一途徑。但相比國外租房系統的完善,國內租房市場還處於一個非常混亂的態勢中,負面新聞比比皆是。雖然租房也有很多相關政策,但並沒有從根本上解決問題

Angular2.0視訊教程(視訊PPT的連結都在底部)

各位道友大家好:        “Angular2.0視訊教程”來了!這是全球第一個完整的Angular 2.0系列視訊教程,到目前為止也是唯一的,該系列的視訊在優酷和youtube同步播出。        還是大漠窮秋老師,還是熟悉的聲音,還是淡淡的小幽默。3年前,大漠老師在慕課網釋出了“Angular

C# 9.0 終於, Top-level programs Partial Methods 兩大新特性探究

## 一:背景 ### 1. 講故事 .NET 5 終於在 6月25日 釋出了第六個預覽版,隨之而來的是更多的新特性加入到了 C# 9 Preview 中,這個系列也可以繼續往下寫了,廢話不多說,今天來看一下 `Top-level programs` 和 `Extending Partial Meth

終於“第一起”基於 IPv6 的 DDoS 攻擊

網際網路工程師們發現了據稱業內第一起基於IPv6的分散式拒絕服務(DDoS)攻擊。他們警告,這僅僅是個開頭,下一波網路大破壞迫在眉睫。 網路專家韋斯利•喬治(Wesley George)本週早些時候注意到了奇怪的流量,這是針對一臺DNS伺服器發動的大規模攻擊的一部分,企圖讓伺服器不堪重負。他供職於

藍湖你們要的“自動切圖”功能

需要 .cn target iad 兩件 hot 設計圖 sdg style 一般本湖君出來吆喝,必然是要搞大事情~ 繼“自動標註”功能後,藍湖再次解鎖重量級功能——“自動切圖”! 小夥伴們,驚喜不驚喜? ? ?延續“藍湖”老規矩,本“自動切圖”功能: ①同時支持Mac和

【雙12首發】終於PhalApi-iView-admin 開源後臺框架

PhalApi-iView-admin 開源後臺框架 碼雲地址:https://gitee.com/dogstar/phalapi-iview-admin Github地址:https://github.com/phalapi/phalapi-iview-admin   主要採用的技術:

物致DIYOpenMV4——比OpenMV3更快,更高,更強的影象識別DIY神器

物致DIY:OpenMV4——比OpenMV3更快,更高,更強的影象識別DIY神器來了! 2018年10月26日 10:16:36 物致-皈依 閱讀數:762 版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/a18156289516/arti

微信官方iPhone手機殼網友今年流行原諒色?

科技你好關注我們·成為科技潮人沒錯,微信又出周邊產品了!這次是手機殼,現在已經在westore上

人工智慧再突破中國MR

  蘋果全球開發者大會(WWDC)終於在萬眾期待中於美國東部時間2019年6月3日在加州舉行,會上蘋果釋出了包括新版Mac Pro

老闆kill -9 的原理都不知道就敢去線上執行?明天不用

[GitHub 14.5k Star 的Java工程師成神之路,開放閱讀了!](https://github.com/hollischuang/toBeTopJavaer) 相信很多程式設計師對於Linux系統都不陌生,即使自己的日常開發機器不是Linux,那麼線上伺服器也大部分都是的,所以,掌握常用的L

C#9.0 終於,您還學的動嗎? 帶上VS一起解讀吧

## 一:背景 ### 1. 講故事 好訊息,`.NET 5.0` 終於在2020年6月10日釋出了第五個預覽版,眼尖的同學一定看到了在這個版本中終於支援了 `C# 9.0`,此處有掌聲,太好了!!! [.Net5官方連結]( https://dotnet.microsoft.com/downl

亞馬遜的VR購物新體驗網購者的福利

strong ear 百萬 cnblogs 發展 新功能 提前 vr技術 似的   (VR開發網2017年5月5日訊)跟蹤亞馬遜在VR中的工作可能是棘手的,因為公司在似乎涉及多個領域時,響應媒體查詢而聞名遐邇。   該公司正在通過其Lumberyard開發引擎幫助制作VR

Word Level1 + Level2 套餐

表格制作 目錄 標題樣式 郵件合並 腳註與尾註 版本說明:雖以Word2010講解,不過2007和2013等版本也適用。套餐介紹:此套餐可以讓您系統學習整個Word的常用技巧與實用功能,查找與替換、表格制作、圖文混排、長文檔的編輯、郵件合並、窗體與控件等等。從基礎到進階,從簡單短篇文檔的排