raylib 快速上手教程:C 语言游戏库从零到第一个窗口只需 30 分钟
【免费下载链接】raylibA simple and easy-to-use library to enjoy videogames programming项目地址: https://gitcode.com/GitHub_Trending/ra/raylib
raylib 是一个用纯 C99 写的游戏编程库,帮你跳过窗口、渲染、音频这些底层琐事,直接用一行函数画出圆、贴上纹理、读按键。它适合想快速出原型的新手和追求轻量跨平台工具链的独立开发者——按本文走完,30 分钟内你能看到自己写的第一扇游戏窗口。
选 raylib 的 4 个理由
- 依赖全内置:图像、字体、音频的第三方库都塞在
src/external/里,clone 完源码就能编译,不用追任何外部包。 - 语言门槛低:整库就是纯 C,PascalCase 命名,函数名即功能,
DrawText就是画文字。 - 2D/3D/音频一体:几何绘制、模型加载、骨骼动画、WAV/MP3/OGG 播放都在同一个头文件里。
- 官方示例海量:
examples/下有 223 个可运行的完整示例,每个都配了截图,照着抄就能学会 API。
| 维度 | raylib | 重型引擎(Unity/UE) | 自写 OpenGL |
|---|---|---|---|
| 依赖管理 | 内置全依赖 ✓ | 需装完整工具链 | 需手动拼依赖 |
| 上手门槛 | 半天级 | 周级 | 月级 |
| 2D + 3D + 音频 | 一套 API ✓ | ✓ | 自己实现 |
| 跨平台(Win/mac/Linux/Web) | ✓ | 部分 | 需逐平台适配 |
| 适合做小工具/嵌入式 | ✓ | ✗ | 视情况 |
raylib 环境准备:clone 仓库与 CMake 配置
先拿源码,这是所有平台通用的起点:
git clone https://gitcode.com/GitHub_Trending/ra/raylib cd raylibLinux / macOS
sudo apt install cmake build-essential pkg-config # Debian/Ubuntu;macOS 需先装 Xcode 命令行工具 cmake -B build -DBUILD_EXAMPLES=ON cmake --build build -jWindows(MinGW)
cmake -B build -G "MinGW Makefiles" -DBUILD_EXAMPLES=ON cmake --build build验证环境是否就绪
./build/examples/core/core_basic_window窗口一弹出来,环境就算搭好了。构建参数都定义在 CMakeOptions.txt 和 src/CMakeLists.txt,不确定某个开关时翻这两个文件最靠谱。
raylib 第一个可运行示例:15 行代码画出游戏窗口
不必等装完整个库——用仓库自带的 CMake 工程直接编译最小示例examples/core/core_basic_window.c,核心逻辑就这几行:
#include "raylib.h" int main(void) { InitWindow(800, 450, "raylib [core] example - basic window"); SetTargetFPS(60); while (!WindowShouldClose()) { BeginDrawing(); ClearBackground(RAYWHITE); DrawText("Congrats! You created your first window!", 190, 200, 20, LIGHTGRAY); EndDrawing(); } CloseWindow(); return 0; }编译运行命令(接着上一节的 build 目录):
cmake --build build --target core_basic_window ./build/examples/core/core_basic_window编译运行后,屏幕上会出现一扇 800x450 的白底窗口,中间一行灰色文字,按 ESC 或点关闭按钮即退出:
raylib 基础窗口示例运行效果:一扇 800x450 的窗口显示 "Congrats! You created your first window!"
这扇窗口就是 raylib 所有程序的最小骨架:InitWindow起窗口,BeginDrawing/EndDrawing包住每帧绘制,WindowShouldClose控制退出循环。
raylib 核心能力走查:2D、3D 与数学库
2D 图形渲染:rshapes 模块
src/rshapes.c实现了整套即时模式绘制,你不需要理解 OpenGL,函数名就是用法:
DrawRectangle(0, 0, 200, 100, SKYBLUE); DrawCircle(400, 225, 50, RED); DrawTextEx(font, "score: 120", (Vector2){10, 10}, 20, 1, GOLD);保存后重新编译,窗口里立刻出现一个蓝矩形加红圆。想看花样可以去examples/shapes/抄,比如shapes_logo_raylib.c就是纯 2D 画出的 raylib 标志。
3D 模型渲染与 PBR 材质
src/rmodels.c负责模型与材质,生成网格、贴纹理各一行:
Mesh cube = GenMeshCube(2.0f, 2.0f, 2.0f); Model model = LoadModelFromMesh(cube); Texture2D tex = LoadTexture("resources/wooden_crate.png"); BeginMode3D(camera); DrawModel(model, (Vector3){ 0, 0, 0 }, 1.0f, WHITE); EndMode3D();编译运行后,你会看到一个带木纹贴图、缓慢转动的立方体——对应仓库里的现成示例 examples/models/models_textured_cube.c:
raylib 纹理立方体示例运行效果:3D 视口中的贴纹立方体
相机控制:rcamera.h 一行更新
src/rcamera.h提供预设相机行为,第一人称视角不用自己推矩阵:
Camera3D camera = { 0 }; camera.position = (Vector3){ 0, 2, 4 }; camera.target = (Vector3){ 0, 2, 0 }; camera.fovy = 60.0f; camera.projection = CAMERA_PERSPECTIVE; UpdateCamera(&camera, CAMERA_FIRST_PERSON); // 每帧调用,自动接管 WASD+鼠标编译运行后,鼠标拖动看四周、WASD 前后移动,即开即用。完整可玩版本在 examples/core/core_3d_camera_first_person.c:
raylib 第一人称相机示例运行效果:支持 WASD 移动与鼠标视角
向量矩阵运算:raymath 单头文件
src/raymath.h是纯头文件数学库,向量加减点积、矩阵变换、四元数全都有,raylib.h已经把它包含进来,直接用:
Vector3 v = Vec3Normalize(target - camera.position); float dist = Vec3Length(v); Mat4 view = ViewMatrix(camera);向量算错是 3D 新手最大坑源,把计算都交给 raymath,出错概率低一大截。
raylib 常见卡点与解法
现象:链接/编译报找不到 raylib 相关符号或头文件大概率是手动拼
gcc -lraylib时路径没对。别硬凑,统一走 CMake:cmake -B build -DBUILD_EXAMPLES=ON && cmake --build build,让工程自己管理包含目录。现象:老机器上窗口打开后黑屏或闪退多半是显卡驱动只支持旧版 OpenGL。重新配置构建,强制降级:
cmake -B build -DOPENGL_VERSION=2.1 -DBUILD_EXAMPLES=ON选项定义见 CMakeOptions.txt,没有硬件加速的环境甚至可以试
Software软件渲染后端。现象:Linux 上画面正常,但 LoadAudioDevice 后没声音先确认装了
libasound2-dev,再确认运行目录有音频文件。Web 端构建走浏览器音频通道,不涉及系统库,报错信息不同,以构建日志为准。现象:全量构建太慢,磁盘占满示例一开就是 200 多个可执行文件,正常现象。只想要库时:
cmake -B build -DBUILD_EXAMPLES=OFF;加-DCMAKE_BUILD_TYPE=Release还能省编译时间。
下一步:学习资源与练手路线
- 源码入口:先读 src/raylib.h,按模块分节注释,等于自带 API 手册;渲染底层看 src/rlgl.h
- 示例清单:
examples/examples_list.txt列出全部 223 个示例,按 audio/core/models/shapes 等目录分好类 - 配套工程模板:projects/CMake/ 是最小可用模板,VS2022 工程在 projects/VS2022/
- 练手建议:先复现 10 个 core 目录示例,再独立写一个贪吃蛇(纯 2D 足够练手感),之后挑战 3D 版
- 工具:VS Code + C/C++ 扩展写代码,GDB 调试,构建全交给 CMake
至此你已经掌握了 5 件事:
- ✅ 用 CMake 从零编译 raylib 并跑通全部示例
- ✅ 写出「初始化窗口 → 帧循环 → 清理」的标准程序骨架
- ✅ 用 rshapes 做 2D 即时模式绘制
- ✅ 用 BeginMode3D + 相机预设搭出 3D 场景
- ✅ 常见构建/运行卡点的排查思路
别停在示例里——clone 仓库、起一扇窗口、把第一个自己画的三角形推进去,raylib 的手感只有写出来才算你的 🚀
【免费下载链接】raylibA simple and easy-to-use library to enjoy videogames programming项目地址: https://gitcode.com/GitHub_Trending/ra/raylib
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考