Home > 遊戲編程 > C++

C++ Archive

關於表頭檔的 inline function

閱讀了猴子靈藥《表頭檔要不要?拿速度來換!》後,發覺所言甚是,表頭檔的問題許多時會被忽略。現在寫的代碼,除了考慮執行效率,也應該要考慮編譯效率。

關於在標頭檔寫 inline function 而增加編譯時間,本人有一點看法,就在此和大家分享。

首先,我們知道

Inline function 的目的是增加執行效率,但一般在 debug 版本是不會被展開的,只有在 Release mode 才會用到。

那麼,在編譯 debug 版本中使用 inline function 只會增加編譯的時間。基於這一點,我現時的”引擎” (不知何時才能算是真正的引擎,可以去除引號)的代碼 layout 就使用 macro 去解決這個問題。所有類別的代碼 layout 分為 3 個檔案: header (.h), inline (.inl) 和 implementation (.cpp)。例如:

Continue reading

混合語言的遊戲開發系統架構

用甚麼程式語言來做軟件是一個大問題,思考了一個周末,現時想做一個混合語言的遊戲開發系統架構。暫時只考慮三種程式語言: C++、C# 及 Lua。以下首先分析這三種語言的特性,之後再提出一個系統架構科案。

Continue reading

試驗SWIG (一) C++ 連接C#和Lua

今晚初次嘗試使用 SWIG (Simple Wrapper Interface Generator)。SWIG 是一個能為 C/C++ 程式生成各種 Script 語言 Wrapper 的工具。簡單地說,就是有了一個 C++ 程式,用 SWIG 來連結這個程式和 Script,使腳本語言可以呼叫 C++ 的函數及類別等等。

SWIG 支持大部份 C++ 的功能,甚至 template 也能支持。同時可以生成十數種腳本語言的 wrapper,包括我正在考慮使用的 Lua、Python 和 C# 等。

跟據我的目標,先做一個 3D Vector 的測試。以下是一部份C++代碼 (Vector3.h):

Continue reading

Home > 遊戲編程 > C++

Search
Feeds
Meta

Return to page top