Nebula3中的屬性

2021-08-23 12:45:58 字數 616 閱讀 2484

attr命名空間下實現了mangalore裡的動態屬性. 屬性是編譯期間型別安全的key/value對, 這是資料庫(database)子系統的基礎.

如圖, attrid相於屬性型別, 而attributedefinition是屬性型別的定義, 其中包含了屬性名, 屬性的四位元組碼, 值型別和訪問型別(讀/寫). 也就是說, attrid是attributedefinition的例項.

實際使用時我們關心的是attribute類.

那麼使用attribute有什麼好處呢? 我覺得最大的好處是可以把某個物件的屬性進行抽象化, 不用每個屬性都設定乙個成員變數. 對於序列化來說, 有了attribute我們可以不用關心具體的成員變數而對所有的attriubte進行統一的處理. 僅僅是增加乙個屬性成員的話, 是不用對類的**進行更改的. 我想每個遊戲的character類做需求做到最後, 成員變數的數目變得很嚇人吧? 為了保證訪問控制還要寫上一大堆的get/set方法, **行數到最後根本控制不住. 而有了attribute, 我們只需要知道屬性名就可以動態的增加或減少屬性了, 這對於指令碼化也提供了及大的便利性, 呵呵.

Nebula3的渲染流程

在說流程之前,有必要先看一下n3的frame子系統 每幀的渲染過程都寫進了配置檔案,預設使用的是 frame win32 dx9default.xml 陰影還有另外一套.在frameshader的配置檔案裡,宣告了一些rendertarget,還有framepass和frameposteffect....

Nebula3的多執行緒架構

nebula3的 執行在兩種根本不同的方案中.第一種方案我稱之為 fat thread 乙個fat thread在乙個執行緒中執行乙個完整的子系統 如渲染,音訊,ai,物理,資源管理 並且基本上鎖定在乙個特定的核心上.第二種型別的執行緒我叫它 job 乙個job是一些資料和用於處理這些資料的包裝成c...

Nebula3學習筆記 1 序

前言 目前這個引擎只是乙個預覽版,很多功能仍在開發當中 硬體需求 顯示卡支援shadermodel3.0 作者blog 用到的開源工程 為了避免版本之間的不相容,已經在sdk中包含 體系結構一覽 nebula3 會跟mangalore 合為乙個整體,mangalore的各種子系統會整合到nebula...