raylib 快速上手:4 个核心能力,15 行代码从窗口到 3D 场景跑通
【免费下载链接】raylibA simple and easy-to-use library to enjoy videogames programming项目地址: https://gitcode.com/GitHub_Trending/ra/raylib
raylib 是一个轻量级 C 语言游戏开发库,把窗口、渲染、音频、输入封装进单个头文件。想在一个下午内验证小游戏创意,它适合你:3 条命令装好,15 行代码出第一个窗口,再跟着做一个可暂停的弹跳球,就能判断值不值得继续投入。
3 条命令装好 raylib
- Ubuntu/Debian:
sudo apt install libraylib-dev - macOS:
brew install raylib - Windows:
choco install raylib
想要最新版,克隆仓库git clone https://gitcode.com/GitHub_Trending/ra/raylib,进 src/ 目录依次执行make和make install。装好后新建 main.c,粘贴下面这个 15 行的最小窗口程序:
#include "raylib.h" int main(void) { InitWindow(800, 450, "raylib first window"); while (!WindowShouldClose()) { BeginDrawing(); ClearBackground(RAYWHITE); DrawText("Hello, raylib!", 320, 200, 40, LIGHTGRAY); EndDrawing(); } CloseWindow(); return 0; }用gcc main.c -o game -lraylib编译,再运行./game。你会看到一个 800×450 的白色窗口,中间一行字,左上角是 FPS 计数:
15 行代码做出可暂停的弹跳球
场景最典型:红球在屏幕里受重力弹跳,空格随时暂停。变量(位置、速度、半径、重力、暂停标志)定义在 main 开头,主循环只做三件事:读输入、更新位置、绘制。核心片段:
if (IsKeyPressed(KEY_SPACE)) paused = !paused; if (!paused) { ballPosition.x += ballSpeed.x; ballPosition.y += ballSpeed.y; ballSpeed.y += gravity; if (ballPosition.x <= ballRadius || ballPosition.x >= GetScreenWidth() - ballRadius) ballSpeed.x *= -1.0f; if (ballPosition.y <= ballRadius || ballPosition.y >= GetScreenHeight() - ballRadius) ballSpeed.y *= -0.95f; } BeginDrawing(); ClearBackground(RAYWHITE); DrawCircleV(ballPosition, ballRadius, RED); DrawText(paused ? "PAUSED" : "", 320, 20, 20, DARKGRAY); EndDrawing();最后那个 0.95 是竖直反弹系数。改成 1.0,球永远弹不累;改成 0.5,每次弹跳高度直接腰斩,手感发闷。调这一个数字,就是在调手感:
拆解这个例子的 4 个核心能力
用 Draw 系列函数画 2D 图形
矩形、圆、文字、贴图都有对应函数,DrawCircleV画圆,DrawText画字,不用碰任何图形 API。贪吃蛇、打砖块这类 2D 游戏,就是这些图形加位置更新和碰撞判断。
用一个相机搭出 3D 场景
BeginMode3D传一个相机(位置、目标点、朝上方向、视野角),里面就能画模型和网格。LoadModel("scene.obj")一行加载外部模型,OBJ、glTF、IQM 都支持。
读取键盘和鼠标事件
IsKeyPressed判断刚按下,IsKeyDown判断按住,GetMousePosition拿光标坐标。滚轮、点击、手柄、手势各有对应函数。
用主循环驱动每一帧
while (!WindowShouldClose())让循环转起来,SetTargetFPS(60)锁帧率,循环里所有更新都按帧推进。这个骨架和任何游戏引擎一致,只是少了几层封装。
最常见的 3 个编译与运行错误
窗口打不开或闪退。raylib 默认走 OpenGL 3.3,显卡版本太旧会起不来。先glxinfo | grep "OpenGL version"确认,低于 3.3 就make GRAPHICS=GRAPHICS_API_OPENGL_21重编。
编译报 raylib.h: No such file or directory。头文件目录没进编译路径。源码构建的先sudo make install装进系统目录,或用-I和-L手动指向头文件和库文件所在目录。
程序能跑但没有声音。系统缺音频开发库。执行sudo apt install libasound2-dev,重新编译。
上手后的 3 条路线
- examples/ 目录有 220 个示例,每个标了星级难度。挑一星先编译跑通再读源码,是最快的熟悉方式。
- projects/ 有现成的 CMake 和常见 IDE 工程模板。复制一份改成自己的游戏工程,构建系统不用自己研究。
- src/raylib.h 是完整 API 清单。找不到某个函数时,直接在这个文件里搜。
raylib 不是引擎,没有编辑器,也没有场景系统,每一行都得自己写;但弄懂游戏是怎么一帧帧跑起来的,之后换更重的引擎也不会心里没底。先花一个下午把上面两个例子跑通,就知道它适不适合你了。
【免费下载链接】raylibA simple and easy-to-use library to enjoy videogames programming项目地址: https://gitcode.com/GitHub_Trending/ra/raylib
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考