日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于跨平台 UI 的思考

發(fā)布時間:2023/12/20 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于跨平台 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 的思考的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。