ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

raylib 入门:15 分钟从一条 gcc 命令跑到自己的 3D 小场景

2026/9/17 13:11:54 拓冰建站 浏览量
raylib 入门:15 分钟从一条 gcc 命令跑到自己的 3D 小场景 raylib 入门15 分钟从一条 gcc 命令跑到自己的 3D 小场景【免费下载链接】raylibA simple and easy-to-use library to enjoy videogames programming项目地址: https://gitcode.com/GitHub_Trending/ra/raylibraylib 是一个用 C 写的轻量级游戏开发库把窗口、渲染、输入、音频封装进一个头文件里。这篇文章带你走一遍 raylib 安装编译的全流程装好库、编译最小窗口示例再做一个可暂停的弹跳球和一个 3D 纹理立方体。适合刚接触 raylib、想先验证它到底好不好上手的开发者。raylib 是什么先给个定位它不是一个引擎。没有编辑器、没有场景系统、没有可视化工具窗口里画什么都由你一行行 C 代码说了算。它的全部价值在于把最底层的事——OpenGL、窗口创建、音频解码、键盘消息——压成了一批直白的函数DrawCircle()、LoadModel()、IsKeyPressed()。你不用碰图形 API写十几行代码就能看到一个会动的画面改一个参数重新编译几秒后就能看到变化。所有依赖都内置在 src/external/ 里所以装完就能用没有再配一个库的环节。raylib 最快安装方式三种系统各一条命令用包管理器是最快的路LinuxUbuntu/Debiansudo apt install libraylib-devmacOSbrew install raylibWindowswinget install raylib或从 Releases 页面 下预编译包想要最新版6.x 之后的新特性再考虑源码构建git clone https://gitcode.com/GitHub_Trending/ra/raylib进src/目录make再make install。装好后把main.c里的内容替换成这个最小窗口示例#include raylib.h int main(void) { InitWindow(800, 450, 我的第一个 raylib 窗口); while (!WindowShouldClose()) { BeginDrawing(); ClearBackground(RAYWHITE); DrawText(Congrats! You created your first window!, 190, 200, 20, LIGHTGRAY); EndDrawing(); } CloseWindow(); return 0; }编译一条命令gcc main.c -o game -lraylib。InitWindow那行的800, 450就是窗口尺寸改成1920, 1080重新编译窗口立刻变大一圈——这个改一行、看一帧的节奏后面全程都会用到。跑起来你应该看到这就是 examples/core/core_basic_window.c 的截图。整个程序就四步开窗、循环判断是否该关、每帧开画/清屏/绘字/收画、关窗。以后你写的任何 raylib 程序骨架都和这十几行一样。一个值得记住的场景可暂停的弹跳球窗口能开之后加一点游戏规则。仓库里就有现成的 examples/shapes/shapes_bouncing_ball.c核心逻辑就几行if (IsKeyPressed(KEY_SPACE)) pause !pause; if (!pause) { position.x speed.x; position.y speed.y; speed.y gravity; if (position.x radius || position.x GetScreenWidth() - radius) speed.x * -1.0f; if (position.y radius || position.y GetScreenHeight() - radius) speed.y * -0.95f; }前两行处理输入空格键切换暂停。中间三行是每帧的位置积分坐标加速度、速度加重力。最后两个if判断撞墙把对应方向速度取反。注意竖直方向反弹乘的是-0.95f——这个数字就是每次落地损失 5% 速度把它改成-1.0f重新编译球就会永远弹得一样高改成-0.8f球很快趴下。一个数字手感全变。这就是官方示例的运行效果小球撞墙反弹、越弹越低。你只需要把这段逻辑套进上一节的窗口骨架就是一个完整的小游戏。从 2D 到 3D一个相机一个纹理立方体想进 3D不用换套路BeginMode3D(camera)包住绘制代码结束再EndMode3D()。相机Camera3D是个只有 5 个字段的结构体——位置position、目标点target、朝上方向up、视野角fovy、投影模式。把fovy从 45 调到 90场景里远处的东西会被压扁得更厉害透视感明显变强改完编译立刻能看出来。examples/models/models_textured_cube.c 是最小的 3D 场景加载一个立方体模型贴一张纹理绕着转。加载外部模型就是LoadModel(scene.obj)一行OBJ、glTF、IQM 都支持骨骼动画也能读。这个立方体带的是 PBR 材质的木纹贴图。看到它说明你的 OpenGL 上下文正常、模型和纹理加载都通了——再往上堆模型、灯光、贴图走的都是同一条路。卡住时先验证这三件事窗口打不开或闪退多半是显卡 OpenGL 版本太旧。先用glxinfo | grep OpenGL version查版本raylib 默认走 OpenGL 3.3不够就在编译时加-DGRAPHICSGRAPHICS_API_OPENGL_21降回兼容模式重新编译再试。编译报raylib.h: No such file or directory这是路径问题不是代码问题。包管理器装的确认带-dev后缀的开发包装上了源码构建的用-I和-L手动指向头文件和库文件目录。程序能跑但没有声音代码大概率没毛病是系统缺音频开发库。Linux 上sudo apt install libasound2-dev后重新编译声音就来了。这三件事解决之后剩下的问题基本都是函数名写错了级别的编译器会直接告诉你。谁适合用 raylib适合想快速验证小游戏创意的 C/C 开发者、教学场景它的代码短到可以直接当课件、以及想弄懂一帧游戏是怎么画出来的的人——没有引擎帮你兜底每一行都是你自己写的。不适合需要多人协作、场景编辑、资产管线的项目raylib 没有这些它默认单窗口、不支持 RTL 和连字排版重度文字渲染也不是它的强项。建议先花一个下午把 examples/ 里一星难度的示例各编译跑一遍再照着弹跳球写自己的第一个游戏。跑通那天你就知道它适不适合你了。【免费下载链接】raylibA simple and easy-to-use library to enjoy videogames programming项目地址: https://gitcode.com/GitHub_Trending/ra/raylib创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考