news 2026/9/2 11:10:20

raylib 快速上手教程:C 语言游戏库从零到第一个窗口只需 30 分钟

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
raylib 快速上手教程:C 语言游戏库从零到第一个窗口只需 30 分钟

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 raylib

Linux / macOS

sudo apt install cmake build-essential pkg-config # Debian/Ubuntu;macOS 需先装 Xcode 命令行工具 cmake -B build -DBUILD_EXAMPLES=ON cmake --build build -j

Windows(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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 11:10:12

用Python做体育赛事数据分析:从数据抓取到趋势可视化

“国乒男单全军覆没”“连续两站WTT无人晋级八强”冲上热搜时,评论区最常见的两种声音:要么是“梯队建设完蛋了”,要么是“一场比赛说明不了问题”。但这两种结论其实都站不住脚——因为大家看到的只是“止步16强”这个点状结果,没…

作者头像 李华
网站建设 2026/9/2 11:09:49

Nextcloud 文件夹 ZIP 打包下载全指南:一键打包与空间优化实操

Nextcloud 文件夹 ZIP 打包下载全指南:一键打包与空间优化实操 【免费下载链接】server ☁️ Nextcloud server, a safe home for all your data 项目地址: https://gitcode.com/GitHub_Trending/se/server 要把一个装着 300 多张交付照片的项目文件夹发给客…

作者头像 李华
网站建设 2026/9/2 11:07:34

用Go重写wafw00f:WAF识别工具的跨平台实践

简介:go-wafw00f 是一款使用 Go 语言重新实现的 WAF 指纹识别工具,面向渗透测试、安全运维与红队人员,目标是提供免 Python 环境依赖的轻量替代方案。该工具目前处于开发阶段,核心思路是复用 wafw00f 官方的大量 Python 规则文件&…

作者头像 李华
网站建设 2026/9/2 11:06:39

基于SpringBoot框架的智慧养老平台设计与实现(源码+文档+部署+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

作者头像 李华
网站建设 2026/9/2 11:06:27

体育教育开题报告怎么写?模板结构、选题方法与答辩准备指南

体育教育开题报告这件事,很多学生把它当成格式作业来处理。模板收到了,导师签字栏看到了,框架复制过来了,但真正要研究什么,反而放到了最后才想。这也是答辩现场最容易被问住的原因:导师问一句“你这个题到…

作者头像 李华