概述
. 這個項目最初的目的是為了嘗試解析現有的UI編輯器(MyGUI)導出的UI布局信息,通過ImGUI還原UI渲染。但是在開發過程中,我發現可以借此實現一個編輯器,一個我不斷的尋找,但始終沒有找到的簡單易用容易擴展的幾何編輯器。“幾何編輯器”這個名字可能不太准確,我也不知道它應該叫什么,我主要用它來實現和驗證各種幾何相關的圖形算法,因為它是個人興趣所致,所以前后實現的兩個功能可能完全沒有關聯,畢竟我是一個興趣廣泛的人。由於這個編輯器的主要目的並不是實現編輯器本身,而是在它的基礎上實現各種幾何算法,因此編輯器本身還比較粗糙(其實整體都比較粗糙- -|||)。值得一提的是,這個項目沒有引入任何第三方渲染庫,底層的渲染管道是基於OpenGL純手工編碼。
依賴:
- 編程語言:C++17
- 編譯環境:Visual Studio 2019
- 第三方庫:GLM,ImGUI,stb_image
模塊:
- 配置
Tips:配置的讀取和寫入,目前僅支持Json格式
- 資源
Tips:當前支持圖片(.jpg,.png),圖集(.atlas),Tilemap地圖(.map),着色器(.program),SDF字體(.fnt),可序列化對象。資源管理是基於std::weak_ptr/std::share_ptr實現,盡可能的簡單易用。
- 事件
Tips:全局事件模塊
- 界面
Tips:基於ImGUI實現的UI模塊,當前已實現控件有:容器框,文本框,輸入框,選擇框,下拉框,樹形框,按鈕,菜單,畫布。通過UI布局文件自動生成UI對象,統一管理UI事件(包括拖放事件),可動態調整容器大小,支持皮膚更換。其中畫布提供了渲染功能,即舞台對象的渲染都將在畫布中實現。
- 組件
Tips:組件模塊和渲染對象都包含在界面中,因為它們都依賴畫布,但組件模塊占比較高,所以單獨提出,它的設計理念可參考Unity3D。
部分功能展示
換膚
資源搜索
舞台基本操作
組件-文本渲染
組件-精靈渲染
組件-光源渲染
組件-地圖渲染
組件-曲線渲染
組件-閃電渲染
組件-精靈變形渲染
組件-后期處理渲染
組件-遮擋剔除渲染
組件-地形擦出渲染
如果你對某個實現感興趣,你可以嘗試在這里找到相對詳細的細節分析(其實也不太詳細)>>> 博客:落單的毛毛蟲