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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

<2021SC@SDUSC> 开源游戏引擎 Overload 代码模块分析 之 OvGame(八)—— 终篇总结

發(fā)布時(shí)間:2023/12/9 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 <2021SC@SDUSC> 开源游戏引擎 Overload 代码模块分析 之 OvGame(八)—— 终篇总结 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2021SC@SDUSC
開(kāi)源游戲引擎 Overload 代碼模塊分析 之 OvGame(八)—— 終篇總結(jié)

目錄

  • 前言
  • 回顧
    • 1、.rc
    • 2、Utils
    • 3、Debug
    • 4、Core
    • 5、Main.cpp
  • 總結(jié)

前言

本篇是開(kāi)源游戲引擎 Overload 模塊 OvGame 的最后一篇了。本篇,筆者將對(duì) OvGame 做一個(gè)簡(jiǎn)單的總結(jié)

另外,想先大致了解 Overload 可前往這篇文章,想看其他相關(guān)文章請(qǐng)前往筆者的 Overload 專欄自主選擇。

回顧

OvGame 模塊是一個(gè)執(zhí)行文件,其作用是 調(diào)用 Overload 的庫(kù)及資源,實(shí)現(xiàn)游戲的運(yùn)行展示。它包含了三個(gè)文件夾:Core、Debug、Utils,以及一個(gè) Main.cpp 主函數(shù);其次,它還使用了 .rc 文件 以及 resource.h 文件,現(xiàn)在讓我們一一簡(jiǎn)單回顧一下吧(已附上鏈接):

1、.rc

.rc 文件本質(zhì)是一個(gè) .txt (文本)文件,一般配合 .h 文件(resource.h)使用;作為一個(gè)資源集合包,能引入各種文件,例如腳本、位圖、窗口、圖標(biāo)等等。

詳見(jiàn):<2021SC@SDUSC> 開(kāi)源游戲引擎 Overload 代碼模塊分析 之 OvGame (一)—— 概況與 .rc 文件

2、Utils

核心是一個(gè) FPSCounter 類,作用是生成一個(gè)顯示幀速率的面板;因此,也公有繼承了許多 Overload::OvUI::Panels 下的類。

詳見(jiàn):<2021SC@SDUSC> 開(kāi)源游戲引擎 Overload 代碼模塊分析 之 OvGame(四)—— Utils(終)大綱及 FPSCounter & Debug(上)大綱及 DriverInfo

3、Debug

核心是三個(gè)類:DriverInfo、FrameInfo、GameProfiler

DriverInfo 類負(fù)責(zé)生成顯示 Driver Information,驅(qū)動(dòng)程序(硬件和軟件)信息,的面板;同樣也公有繼承了許多 Overload::OvUI::Panels 下的類。而該類顯示信息的方式核心是調(diào)用 glfw 的 glGetString(),能根據(jù)給出名稱來(lái)獲得所需的信息。

詳見(jiàn):<2021SC@SDUSC> 開(kāi)源游戲引擎 Overload 代碼模塊分析 之 OvGame(四)—— Utils(終)大綱及 FPSCounter & Debug(上)大綱及 DriverInfo

FrameInfo 類可以生成 Frame Information,框架信息,的展示面板,也繼承了 OvUI 的 PanelUndecorated 類;該類是直接讀取結(jié)構(gòu)體 FrameInfo 中的數(shù)據(jù),顯示出三角形個(gè)數(shù)、批次數(shù)、實(shí)例數(shù)的信息。

GameProfiler 類可以生成 Profiling Information,配置文件信息,的面板;該類具體展示的是一個(gè)操作的 “Action | Total duration | Frame Duration | Frame load | Total calls” 的內(nèi)容。

詳見(jiàn):<2021SC@SDUSC> 開(kāi)源游戲引擎 Overload 代碼模塊分析 之 OvGame(五)—— Debug(下)FrameInfo & GameProfiler

4、Core

核心是四個(gè)類:Application、Context、Game、GameRenderer;它們之間是不獨(dú)立,層層調(diào)用(包括了上文的 Utils 和 Debug)關(guān)系。

首先,最底層的 Context 類,負(fù)責(zé)處理引擎的環(huán)境設(shè)置。該類包含了大量的公有 unique_ptr 智能指針,這些指針指向了 Overload 的各個(gè)重要模塊,從而實(shí)現(xiàn)集合調(diào)度;因此,該類能夠設(shè)置包括:資產(chǎn)路徑、基礎(chǔ)配置、窗口、圖形環(huán)境、音頻、物理引擎、服務(wù)、腳本等。

詳見(jiàn):<2021SC@SDUSC> 開(kāi)源游戲引擎 Overload 代碼模塊分析 之 OvGame(二)—— Core(一)大綱與 Context

其次,疊上一層 GameRenderer 類,引入上述的 Context 類,負(fù)責(zé)游戲界面的渲染工作;使用的 OpenGL 接口,實(shí)現(xiàn)場(chǎng)景渲染、引擎 UBO(OpenGL 緩沖對(duì)象)設(shè)置、更新光照 SSBO(GLSL 緩沖對(duì)象)等。

詳見(jiàn):<2021SC@SDUSC> 開(kāi)源游戲引擎 Overload 代碼模塊分析 之 OvGame(三)—— Core(二)GameRenderer

而后,再疊上一層 Game 類,引入了上述的 Context 類與 GameRenderer 類,以及 Utils 與 Debug 文件;該類負(fù)責(zé)處理游戲邏輯,其重要的操作是:從 PreUpdate() 啟用輸入和事件、經(jīng)過(guò) Update() 更新、到 PostUpdate() 結(jié)束輸入輸出緩存的一套邏輯更新(UBO、渲染器等等)。

詳見(jiàn):<2021SC@SDUSC> 開(kāi)源游戲引擎 Overload 代碼模塊分析 之 OvGame(六)—— Core(三)Game

最后,頂層的 Application 類,引入了上述的 Context 類與 Game 類,是 OvGame 模塊的接口點(diǎn);因此,該類的核心就是調(diào)用 Context 和 Game 等的內(nèi)置變量與函數(shù),實(shí)現(xiàn)運(yùn)行應(yīng)用

詳見(jiàn):<2021SC@SDUSC> 開(kāi)源游戲引擎 Overload 代碼模塊分析 之 OvGame(七)—— Core(四)Application & Main.cpp

5、Main.cpp

核心是利用條件編譯命令,選擇函數(shù)名為 int 型 main() 或 INT(重定義前即 int)型 WinMain(),實(shí)現(xiàn)總體調(diào)控是否進(jìn)入 Debug 模式;函數(shù)體功能則是運(yùn)行應(yīng)用程序與中止引擎程序

詳見(jiàn):<2021SC@SDUSC> 開(kāi)源游戲引擎 Overload 代碼模塊分析 之 OvGame(七)—— Core(四)Application & Main.cpp

總結(jié)

通過(guò)回顧,我們可以發(fā)現(xiàn) OvGame 的一個(gè)共同特點(diǎn):層層引用,封裝功能,集合調(diào)度。由此可見(jiàn),對(duì)于一個(gè)應(yīng)用程序來(lái)說(shuō),功能之間的獨(dú)立性是非常重要的,這樣既能使代碼簡(jiǎn)明、邏輯清晰,又能使代碼擁有很強(qiáng)的泛化能力,即可以之間用于其他項(xiàng)目,這是我們?cè)谝院蟮墓ぷ黜?xiàng)目中可以考慮的編寫(xiě)方法。

總結(jié)

以上是生活随笔為你收集整理的<2021SC@SDUSC> 开源游戏引擎 Overload 代码模块分析 之 OvGame(八)—— 终篇总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。