raylib 的新版本終於準備就緒,而這一次,這又是 raylib 有史以來最大規模的發行版!感謝許多優秀貢獻者的支持,這個版本包含了許多新功能和改進,同時也要感謝 NLnet 和 NGI Zero Commond Fund 的財務支持,讓我在過去幾個月裡能夠投入大部分時間在這個專案上。

本次發行版的一些驚人數字:

新的平台後端:Memory - rcore_memory:這個新的平台已與軟體渲染器後端一起加入,允許在平台無關的記憶體 framebuffer 上進行 2D 和 3D 渲染,它可以無頭運行,並且輸出幀可以直接匯出為圖像。這個新的後端對於伺服器上的圖形渲染或直接使用記憶體緩衝區處理圖像也可能很有用。

新的平台後端:Win32 - rcore_desktop_win32:一個新的 Windows 平台後端,也是朝著潛在取代/替代 raylib 目前使用的平台函式庫(GLFW/SDL/RGFW)邁出的第一步。這個後端遵循與其他 raylib 後端相同的 API 模板結構,但直接實作 Win32 API 呼叫。它允許初始化 OpenGL GPU 加速視窗,也支援基於 GDI 的視窗,這對於軟體渲染器後端很有用。這種新的後端方法,遵循通用的模板結構並按特定的作業系統/視窗系統分離平台邏輯,將簡化程式碼,提高 raylib 的維護性、可讀性和可移植性,為未來奠定基礎。注意:這個後端是新的,可能需要進一步測試,目前請將其作為實驗性後端使用。

新的平台後端:Emscripten - rcore_web_emscripten:與 Win32 後端一樣,這個新的 Web 後端擺脫了 libglfw.js,直接實作 Emscripten/JS 功能,沒有其他依賴項,支援新的軟體渲染器直接在非加速的 2D Canvas 上繪圖,同時也支援需要時的 WebGL 硬體加速 Canvas。注意:這個後端是新的,可能需要進一步測試,目前請將其作為實驗性後端使用。

重新設計的全螢幕模式和高 DPI 內容縮放:經過多年和許多相關問題的處理,全螢幕和高 DPI 內容縮放支援已從頭開始完全重新設計。新設計優先考慮無邊框全螢幕模式,並自動偵測目前的顯示器內容縮放配置,以便在需要時相應地縮放視窗和 framebuffer。儘管如此,如果使用者希望啟用高 DPI 支援,仍需在建立視窗時啟用 FLAG_WINDOW_HIGHDPI。這個新系統已在 Windows、Linux(X11、Wayland)、macOS 上進行了仔細測試,支援多個顯示器和多種解析度,包括 4K 顯示器。

重新設計的骨架動畫系統:為 3D 模型建立了一個新的動畫系統,以支援動畫混合,可以在單一幀之間,以及在不同動畫的不同幀之間進行混合,從而實現動畫之間的輕鬆定時轉換。這次重新設計涉及審查 raylib 的幾個結構,以更好地容納動畫資料:Model、ModelSkeleton、ModelAnimation,但 API 已簡化,並且透過多項優化改進了 GPU 加速蒙皮的支援。

重新設計的建置配置系統 - config.h:raylib 允許針對特定需求進行大量自訂(例如,禁用特定應用程式不需要的模組,如 rmodels 或 raudio),但之前的實作並不容易從自訂建置系統中禁用某些功能。新設計不僅允許透過簡單的 -DSUPPORT_FILEFORMAT_OBJ=0 在建置命令列中禁用功能,而且整個系統都經過了審查,移除了無用的旗標並公開了新的旗標。

新的檔案系統 API:多年來,根據需要,已向 raylib API 添加了多個檔案系統函數,但感覺有些不一致,並且缺少一些部分。在這個新版本中,整個檔案系統 API 都經過了審查和重新組織,將所有功能編譯到單一模組:rcore,因此移除了 utils 模組,並且建置系統進一步簡化;只需要編譯 6-7 個模組(.c)即可包含完整的 raylib 函式庫。這個新的檔案系統 API 將允許 raylib 用於建立自訂建置系統,正如新的 rexm 工具在範例管理方面的演示。目前 raylib 包含超過 40 個檔案系統管理函數:

請務必查看 raylib CHANGELOG 以取得詳細的變更列表!

我要感謝所有貢獻者(超過 850 位!),他們多年來極大地改進了 raylib,並使其日復一日地變得更好。同時也要感謝 raylib 社群和所有 raylib 使用者多年來對該函式庫的支持。

最後,我要感謝 puffer.ai 和 comma.ai 使用 raylib 並作為白金贊助者支持該專案,以及多年來贊助 raylib 的許多其他個人。感謝你們所有人讓我能夠繼續從事這個函式庫的工作!

經過 12 年多的開發,raylib 6.0 今天已成為享受遊戲/工具/圖形程式設計的最佳函式庫之一!

享受 raylib 的圖形程式設計吧!:)