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

原文地址git

概述

.  這個項目最初的目的是爲了嘗試解析現有的UI編輯器(MyGUI)導出的UI佈局信息,經過ImGUI還原UI渲染。可是在開發過程當中,我發現能夠藉此實現一個編輯器,一個我不斷的尋找,但始終沒有找到的簡單易用容易擴展的幾何編輯器。「幾何編輯器」這個名字可能不太準確,我也不知道它應該叫什麼,我主要用它來實現和驗證各類幾何相關的圖形算法,由於它是我的興趣所致,因此先後實現的兩個功能可能徹底沒有關聯,畢竟我是一個興趣普遍的人。因爲這個編輯器的主要目的並非實現編輯器自己,而是在它的基礎上實現各類幾何算法,所以編輯器自己還比較粗糙(其實總體都比較粗糙- -|||)。值得一提的是,這個項目沒有引入任何第三方渲染庫,底層的渲染管道是基於OpenGL純手工編碼。

依賴:

  • 編程語言:C++17
  • 編譯環境:Visual Studio 2019
  • 第三方庫:GLM,ImGUI,stb_image

模塊:

  • 配置

Tips:配置的讀取和寫入,目前僅支持Json格式github

  • 資源

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

舞臺基本操做ui

舞臺基本操做.gif

組件-文本渲染編碼

組件-文本渲染.gif

組件-精靈渲染

組件-精靈渲染.gif

組件-光源渲染

組件-光源渲染.gif

組件-地圖渲染

組件-地圖渲染.png

組件-曲線渲染

組件-曲線渲染.gif

組件-閃電渲染

組件-閃電渲染.gif

組件-精靈變形渲染

組件-精靈變形渲染.gif

組件-後期處理渲染

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

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

組件-遮擋剔除渲染

組件-遮擋剔除渲染.gif

組件-地形擦出渲染

組件-地形擦出渲染.gif

若是你對某個實現感興趣,你能夠嘗試在這裏找到相對詳細的細節分析(其實也不太詳細)>>> 博客:落單的毛毛蟲

相關文章
相關標籤/搜索