raylib:简单易用的视频游戏编程库
raylib是一个简单易用的库,让您享受视频游戏编程。
raylib受到了Borland BGI图形库和XNA框架的高度启发,特别适合原型设计、工具开发、图形应用程序、嵌入式系统和教育。
“
冒险者须知: raylib是一个编程库,让你享受视频游戏编程;没有花哨的界面,没有可视化辅助,没有调试按钮......仅仅是以最纯粹的斯巴达程序员方式编写代码。
准备学习了吗?跳到代码示例!
特性
- 没有外部依赖,所有需要的库都被捆绑进raylib中。
- 支持多个平台:Windows、Linux、MacOS、RPI、Android、HTML5...等!
- 用纯C代码编写 (C99),使用PascalCase/camelCase命名法。
- 使用OpenGL实现硬件加速(1.1, 2.1, 3.3, 4.3, ES 2.0, ES 3.0)。
- 独特的OpenGL抽象层(可作为独立模块使用):rlgl。
- 支持多种字体格式(TTF、OTF、FNT、BDF、精灵字体)。
- 支持多种纹理格式,包括压缩格式(DXT、ETC、ASTC)。
- 全3D支持,包括3D形状、模型、广告牌、高程图等。
- 灵活的材料系统,支持经典贴图和PBR贴图。
- 支持动画3D模型(骨骼动画)(IQM, M3D, glTF)。
- 支持着色器,包括模型着色器和后处理着色器。
- 强大的数学模块,支持向量、矩阵和四元数运算:raymath。
- 支持音频加载和播放,具有流媒体支持(WAV、QOA、OGG、MP3、FLAC、XM、MOD)。
- 支持VR立体渲染,可以配置HMD设备参数。
- 拥有巨大的示例集合,包含超过+140个代码示例!
- 提供对+70种编程语言的绑定!
- 免费和开源。
基本示例
以下是一个基本的raylib示例,它创建一个窗口,并在屏幕中间绘制文本“恭喜!您创建了您的第一扇窗户!”。
可以在这里观看此示例的实时运行。
#include "raylib.h"
int main(void)
{
InitWindow(800, 450, "raylib [core] example - basic window");
while (!WindowShouldClose())
{
BeginDrawing();
ClearBackground(RAYWHITE);
DrawText("Congrats! You created your first window!", 190, 200, 20, LIGHTGRAY);
EndDrawing();
}
CloseWindow();
return 0;
}
构建和安装
raylib的二进制版本已在Windows、Linux、macOS、Android和HTML5上的Github Releases页面提供。
raylib也可以通过多个包管理器在多个操作系统上获取。
在多个平台上安装和构建raylib
raylib Wiki包含详细的构建和使用说明,适用于多个平台。
- 在Windows上工作
- 在macOS上工作
- 在GNU Linux上工作
- 在Chrome OS上工作
- 在FreeBSD上工作
- 在Raspberry Pi上工作
- 为Android工作
- 为Web (HTML5)工作
- 使用CMake在任何地方工作
“
请注意,Wiki是开放编辑的,如果在构建raylib时发现问题,可以随时编辑Wiki或打开相关问题。
用多个IDE设置raylib
raylib是在Windows平台上使用Notepad++和MinGW GCC编译器开发的,但也可以在其他平台的多种IDE中使用。
项目目录包含多个现成的项目模板,用于构建raylib和代码示例,可与多种IDE一起使用。
“
请注意,支持许多IDE,某些提供的模板可能需要一些审查,因此如果您发现任何模板存在问题或认为可以改进,请随时发送PR或打开相关问题。
学习和文档
raylib设计为以示例作为主要参考进行学习。没有标准API文档,但有一个速查表,其中包含库中所有函数的简短描述、输入参数和结果值名称,应该足够直观以理解每个函数的工作原理。
raylib设计的相关附加文档可以在raylib GitHub Wiki上找到。以下是相关链接:
类似项目介绍
raylib是一个强大的视频游戏编程库,然而还有一些其他开源项目也具备类似的功能。
-
SDL (Simple DirectMedia Layer) :
- SDL是一个跨平台的多媒体库,用于访问音频、键盘、鼠标、游戏手柄、3D硬件图形的低级别功能。它被广泛用于游戏开发和媒体播放。
-
SFML (Simple and Fast Multimedia Library) :
- SFML是一个提供简单接口的多媒体库,支持2D图形、音频、网络等,非常适合快速开发视频游戏和图形程序。
-
Allegro:
- Allegro是一个为视频游戏编程而设计的跨平台C++库,提供图形、音频、输入等功能,使得游戏开发更加简便。
这些库同样具备强大的功能和丰富的社区支持,开发者可根据自身需求选择适合的游戏编程库。