實作獨立函式庫的各種單一檔案跨平台 C/C++ 頭檔。
圖書館 | 描述 | 最新版本 | 語言 |
---|---|---|---|
可愛_c2 | 基元、布林結果和/或流形生成、形狀投射/掃描測試、光線投射的 2D 碰撞偵測例程 | 1.10 | C/C++ |
可愛網 | 適用於需要基於 UDP 的可選可靠性層以及內建安全方案的遊戲的網路庫 | 1.03 | C/C++ |
可愛的平鋪 | 非常有效率的載入器,用於匯出為 JSON 格式的平鋪地圖 | 1.07 | C/C++ |
可愛的精靈 | 將 .ase/.aseprite 檔案解析為緊湊且方便的結構集合 | 1.04 | C/C++ |
可愛的聲音 | 單聲道/立體聲加載/播放/循環(帶插件)/平移 WAV + OGG(OGG 的 stb_vorbis 包裝器)、高性能自訂混音器、音樂 + 交叉淡入淡出支持 | 2.08 | C/C++ |
可愛的數學 | 透過 SSE 內在函數進行專業級 3D 向量數學 | 1.02 | C++ |
可愛_png | 載入/儲存 PNG、紋理圖集編譯器、DEFLATE 相容解壓縮器 | 1.05 | C/C++ |
可愛的精靈批次 | 運行時 2d 精靈批次程式。在記憶體中動態建立地圖集。可用於實現任何目的(如 2D 遊戲)的精靈批次程式以實現高效能渲染,而無需在磁碟上預先編譯紋理圖集。 | 1.06 | C/C++ |
可愛同步 | 實用同步原語集合,包括讀取/寫入鎖定和執行緒池/任務系統 | 1.01 | C/C++ |
可愛的_tls | 透過 TCP 建立與網站的 TLS 連接,這對於 HTTPS 請求很有用。 | 1.01 | C/C++/Obj-C |
通常,這些標頭沒有依賴性,並且旨在直接包含在原始程式碼中(檢查每個標頭以獲取文件頂部的特定文件)。每個標頭都有一個 LIBNAME_IMPLMENTATION 符號;將其新增至程式碼中的單一翻譯單元中,並在其後包含標題以定義庫符號。否則只需像平常一樣包含標題即可。
有些標題還包含範例程式碼或演示。在此存儲庫中,只需查找相應的範例或測試資料夾。範例資料夾對於了解如何使用特定標頭特別有用。
這是cute_headers 的discord 聊天的連結。請隨意介入並提出問題、提出建議或討論。如果有人使用過cute_headers,很高興聽到您的體驗! https://discord.gg/2DFHRmX
另一種聯繫我的簡單方法是透過 Twitter @randypgaul。
- 製作單一文件有什麼意義?為什麼標頭中有實作和靜態函數?
包含這些標頭就像包含普通標頭一樣。然而,為了定義實現,每個標頭看起來像這樣:
// Do this ONCE in a .c/.cpp file
#define LIBNAME_IMPLEMENTATION
#include "libname.h"
// Everywhere else, just include like a typical header
#include "libname.h"
這會將檔案一次變成 header + c 檔案組合。這樣做的要點是:A)處理標頭或將其發送給人們很容易,沒有 zip 檔案或任何內容,只需複製並貼上單個檔案; B) 建置腳本很麻煩,這些單一檔案庫可以整合到任何專案中,而無需修改單一建置腳本。
- 將所有程式碼寫在頭檔中不會破壞編譯時間嗎?
標頭實現編譯時間慢的恥辱來自內聯程式碼和模板垃圾郵件。在任何一種情況下,每個翻譯單元都必須遍歷標頭並放置函數的內聯版本,或為模板產生各種特定於類型的函數。一旦連結器啟動並需要將翻譯單元合併在一起,刪除重複的符號,情況就會變得更糟。通常連結器是單線程任務,並且確實會成為構建時間的瓶頸。
一個構造良好的單文件頭不會使用任何模板,並且很少使用內聯。另外,構造良好的單文件頭使用 #define 將實現(函數定義和符號)放入單一翻譯單元中。透過這種方式,就建置時間而言,精心設計的單一檔案頭幾乎是 C 編譯器能遇到的最好的東西。特別是當標頭可以選擇#define 掉不需要的功能時。
- 這些僅包含頭檔的庫不是一種新時尚嗎?
我個人真的不知道這是否是一種時尚,但這些文件實際上不僅僅是標題。它們是標頭,末尾附有 .C 檔案部分(實作)。它是兩個不同的檔案與 C 預處理器黏在一起,但除非使用者執行#define LIB_IMPLMENTATION,否則實作部分永遠不會顯示。此定義步驟是使用這些標頭所需的唯一整合步驟。
不幸的是,編寫一個好的標頭庫非常困難,因此任何隨意的標頭庫可能都不是一個好的標頭庫。 STB 和 RJM 是非常好的標頭庫,並且是了解良好的標頭庫是什麼樣子的很好的參考。馬蒂亞斯·古斯塔夫森 (Mattias Gustavsson) 有我最喜歡的標題集。
- 許可證是什麼?
每個庫在文件末尾都包含許可證資訊。可以在公共域和 zlib 之間進行選擇。
- 我正在尋找以前見過的標題,但它丟失了。它去哪了?
一些不受歡迎或不太有用的標頭已被棄用,現在仍然存在於此。
- *你們有更高等級的函式庫嗎?這些似乎有點太低級了。
可愛的標題確實相當低級。他們解決具體問題。如果您正在尋找更高級別的遊戲創建框架,我建議嘗試 Cute Framework,這是一個 2D 遊戲創建框架,主要構建在此處看到的各種低級別可愛標頭之上。