您好,登錄后才能下訂單哦!
《游戲引擎架構》在兩年前就買了,而且自己也大體的看過一遍,因為自己想學習引擎的底層知識,所以重新又找出了這本書再讀一遍,并把根據自己的理解寫一些讀書筆記在這里與大家交流。
?????? 閑話少續,開始本篇的內容,這本書的第一部分是基礎篇,第一章概述了一些引擎概念,第二章講解了一些工具的用法(Visual Studio等),第三章介紹了C++,和一般的C++書不一樣的是,本書講解的C++應該更多的是引擎中常用的一些概念,另外還包括一些軟件工程基礎思想,筆者覺得比較重要的有以下幾點
????? 首先,“讓錯誤的程序顯而易見”,這部分是在介紹編碼標準的時候介紹的,其中推薦了一篇文章--“讓錯誤的程序顯而易見”(http://chinesetrad.joelonsoftware.com/Articles/Wrong.html),這篇文章介紹了通過命名方式的前綴反應變量的性質,從而讓錯誤的程序顯而易見,介紹了匈牙利命名法的使用方式。
?????? 然后是對象的內存布局,這部分會對程序的性能優化很有幫助,在class和struct中,編譯器不會把數據程序員緊湊的包裹在一起,因為每種數據都有其天然的對齊方式,供CPU高效的從內存讀/寫。對齊方式即內存地址為對齊字節大小的倍數,另外編譯器可能會為了數組的對齊,會在末端加入填充,以下是32位系統下各個類型的大小(單位:字節):
int:4字節;float:4字節;double:8字節;bool:1字節;char:1字節;short:2字節;long:4字節或者8字節
?????? 需要說明的是,當class中有虛函數的時候,或者是繼承的類中有虛函數的時候,通常會在類的布局最前端加入一個虛表指針,它指向名為虛函數表的一個數據結構,因為指針是int類型的。
?????? 了解內存布局的意義是,當我們寫類和結構體的時候,最優化的處理方式是自己按照內存布局規則把數據排列好,從而可以降低類或者結構體所占的大小。
?????? 另外需要說明的是類型大小的問題,因為標準C++基本數據類型設置為可以移植的,因而不做明確的規定,在游戲引擎的開發中,有時候需要知道某些變量的確切尺寸,多數游戲引擎會自定義基本的數據類型;另外還有大端和小端的轉換問題,Wii、Xbox360和PS這種使用PowerPC開發的小端設備可能會涉及到數據轉換問題。
?????? 最后介紹了實現錯誤檢測及處理,將斷言分為兩個宏中,方便在發布版時關掉不必要的斷言從而避免不必要的效率損失。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。