关于跨平台 UI 的思考
一:跨平臺,這里的跨平臺,指的是:Windows、Linux、MacOS、IOS、Andriod。
二:跨平臺,首先大家想到的是 Java。雖然眾多平臺都支持 Java,但 Java 效率低下。2D、3D游戲就沒得完了。
? ? ? .NET 現在跨平臺了,但支持的設備、操作系統(tǒng)都不廣。也不是個好的選擇(雖然有 UnrealEngine 優(yōu)秀的游戲引擎)。
三:Flutter,谷歌開源跨平臺UI框架。主要針對 Android、IOS 移動端。想跨所有平臺,依然不是個好的選擇。
? ? ? ?當然,移動端的開發(fā)框架還有很多,這里就不一一列舉了。
四:DirectX 只是 Windows 平臺下高效的圖形繪制引擎。其它平臺都不支持。
? ? ? ? QT 不是圖形繪制引擎。它只是個 C++ 開發(fā)框架。和 MFC(微軟)、VCL(Borland) 一樣。
五:既然是 UI,那必須需要有個眾多平臺都支持的繪制圖形引擎來繪制界面。這個圖形繪制引擎要多用 GPU,少用 CPU。
? ? ? 支持所有平臺的圖形引擎:OpenGL、Vulkan。
? ? ? FireMonkey、QT 都是基于 OpenGL 的開發(fā)框架。(RS11 中,FireMonkey 在 Windows 下,已經使用 DirectX 作為圖形繪制引擎了)
? ? ? OpengGL 越來越落伍了。在者操作系統(tǒng)逐漸都不在支持了。
? ? ? 看來 Vulkan 是唯一選擇了。
六:基于 Vulkan 的圖形繪制開發(fā)框架有哪些?
? ? ? 沒有。基本沒有。等待大俠你的出手了!
? ? ? Acid 是一個基于 Vulkan 的跨平臺游戲引擎。C++ 編寫。
? ? ? 還不成熟。等以后成熟了,封裝封裝,弄個 UI 開發(fā)框架是不成問題的。
? ? ? 但是,沒有大樹(大公司)乘涼,很難成功的。
? ? ? OGRECave 公司繼 OGRE 引擎之后,又做了一個:OGRE-NEXT(OGRE2) 跨平臺游戲引擎。支持 Vulkan 渲染了。
? ? ??亞馬遜也發(fā)布開源游戲引擎 O3DE(Open 3D Engine),跨平臺游戲引擎。支持Vulkan、Metal和DirectX 12上的光線追蹤。
? ? ??DiligentEngine 應該算真正意義上的圖形繪制引擎了。支持的系統(tǒng)和使用的圖形繪制引擎如下圖:
? ? ??
?七:Google 的 Chromium? 是跨平臺的。那么我們可以使用它,封裝做出各種控件,這樣 UI 就搞定了。CEF 就這么產生了。
? ? ? ?也不用自己考慮什么繪圖引擎了,都交給 Chromium 去解決了。
? ? ? ?這也是目前主流的技術。站在巨人的肩膀上,事情就好辦多了。
? ? ? ?現在很多跨平臺應用軟件都是用這個技術做的。比如大名鼎鼎的 VSCode。
? ? ? ?當然,缺點也有。普通應用軟件的 UI 是沒有什么問題的,3D 游戲肯定就不行了。
八:總之,三種途徑可以實現跨平臺 UI:
? ? ? ?1、使用跨平臺瀏覽器 Chromium;
? ? ? ?2、使用跨平臺游戲引擎;
? ? ? ?3、完全自己從頭開始做(既要兼容普通應用程序的 UI,又要兼容 3D 游戲,又要包含瀏覽器,那是相當的困難);
? ? ? ?看來只能使用前面兩種方案了。
? ? ? ?使用 跨平臺游戲引擎 + 跨平臺瀏覽器 Chromium 的方式,即兼容 3D 游戲,又兼容普通應用程序的 UI,還包含了對瀏覽器的支持。
? ? ? ?這種方案,算是最好的解決方案了。但是,現在還沒有現成、成熟的開發(fā)框架可以使用。
九:GO、Rust、Python,等等跨平臺語言,但都沒有自已的跨平臺 UI 開發(fā)框架。看來跨平臺 UI 是個難題呀!
十:文中提到的工具源碼地址:
? ? ? GO ? ? ?:https://github.com/golang/go.git
? ? ? Rust ? ?:https://github.com/rust-lang/rust.git
? ? ? Python:https://github.com/python/cpython.git
? ? ? Flutter :https://github.com/flutter/flutter.git
? ? ? QT ? ? ?:https://code.qt.io/qt/qt5.git
? ? ? Acid ? ?:https://github.com/EQMG/Acid.git
? ? ?Ogre2? :https://github.com/OGRECave/ogre-next.git
? ? ?O3DE? :https://github.com/o3de/o3de.git
? ? ?CEF? ? : https://github.com/chromiumembedded/cef.git
? ? ?chromium? ? ? ?:https://chromium.googlesource.com/chromium/src.git
? ? ?UnrealEngine :https://github.com/EpicGames/UnrealEngine.git
? ? ?DiligentEngine:https://github.com/DiligentGraphics/DiligentEngine.git
總結
以上是生活随笔為你收集整理的关于跨平台 UI 的思考的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多项式除法c++
- 下一篇: Keil安装stm库文件方法及下载地址