關於2D渲染的一些小想法


原文地址

概述

.  這個項目最初的目的是為了嘗試解析現有的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。

部分功能展示

換膚

換膚.gif

資源搜索

資源搜索.gif

舞台基本操作

舞台基本操作.gif

組件-文本渲染

組件-文本渲染.gif

組件-精靈渲染

組件-精靈渲染.gif

組件-光源渲染

組件-光源渲染.gif

組件-地圖渲染

組件-地圖渲染.png

組件-曲線渲染

組件-曲線渲染.gif

組件-閃電渲染

組件-閃電渲染.gif

組件-精靈變形渲染

組件-精靈變形渲染.gif

組件-后期處理渲染

組件-后期處理渲染-扭曲.gif

組件-后期處理渲染-漩渦.gif

組件-遮擋剔除渲染

組件-遮擋剔除渲染.gif

組件-地形擦出渲染

組件-地形擦出渲染.gif

如果你對某個實現感興趣,你可以嘗試在這里找到相對詳細的細節分析(其實也不太詳細)>>> 博客:落單的毛毛蟲


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM