raylib 游戏库入门教程:3 步从空白窗口搭到 3D 场景,30 分钟跑通 raylib 游戏库入门教程3 步从空白窗口搭到 3D 场景30 分钟跑通【免费下载链接】raylibA simple and easy-to-use library to enjoy videogames programming项目地址: https://gitcode.com/GitHub_Trending/ra/raylibraylib 是一个 C 语言写的游戏编程库窗口、绘制、3D、音频、输入都封装在一个头文件里解决游戏骨架要自己搭的问题。适合想快速验证小游戏创意的开发者。下面 3 步我们在一个空白窗口上逐步拼装出可玩的例子先加输入再加 3D 场景。 第 1 步先跑起来一条命令安装十几行代码开窗口先装。常见发行版的包管理器都有以 Ubuntu 为例sudo apt install libraylib-dev gcc main.c -o game -lraylibWindows 用 chocomacOS 用 brew都是一条命令的事。要追最新版就克隆仓库进 src 目录 make 构建再 make installgit clone https://gitcode.com/GitHub_Trending/ra/raylib cd raylib/src make make install写最短的程序开个窗口、画一行字#include raylib.h int main(void) { InitWindow(800, 450, raylib example - basic window); while (!WindowShouldClose()) { BeginDrawing(); ClearBackground(RAYWHITE); DrawText(Congrats! You created your first window!, 190, 200, 20, LIGHTGRAY); EndDrawing(); } CloseWindow(); return 0; }编译完你会得到一个白底 800×450 的窗口中间一行字。这就是官方 basic window 示例的效果图里就是这个示例跑起来的样子对应上面十几行 C 代码。骨架记住就行开窗、循环、画一帧、关窗。raylib 不替你写逻辑你少写一行屏幕就少一样东西。想锁帧率的话开窗前加一行SetTargetFPS(60)就够。后面所有改动都往那个 while 循环里塞。⌨️ 第 2 步让它动起来加输入和位置更新往循环里加两件事读输入、更新位置。输入函数和事件一一对应IsKeyPressed(KEY_SPACE)只在按下的那一帧返回真IsKeyDown(KEY_A)在整个按住期间都是真GetMousePosition()拿当前鼠标坐标返回值是Vector2可直接用在绘制参数里。把一个球放进窗口带重力、带反弹、可暂停if (IsKeyPressed(KEY_SPACE)) pause !pause; if (!pause) { position.x speed.x; position.y speed.y; speed.y gravity; // 示例里是 0.2f if (position.x radius || position.x GetScreenWidth() - radius) speed.x * -1.0f; if (position.y radius || position.y GetScreenHeight() - radius) speed.y * -0.95f; }这是 1 星难度的官方示例完整代码在 examples/shapes/shapes_bouncing_ball.c。两个参数值得动手改-0.95f是落地反弹的损耗。改成1.0f就不衰减球每次弹回同样高度再调小球更快趴下。gravity 0.2f是每帧加到竖直速度上的量改大坠落更急置 0 就是无重力的太空感。跑起来的效果图里红球在重力下弹跳空格暂停G 键切换重力开关。 第 3 步让它像样用一个相机进 3D只做 2D 可以跳过这步。想上 3D唯一多做的事是定义一个相机再用BeginMode3D包住绘制代码。相机就 5 个字段含义都是字面的Camera3D camera { .position { 0.0f, 10.0f, 10.0f }, // 站在哪 .target { 0.0f, 0.0f, 0.0f }, // 看哪 .up { 0.0f, 1.0f, 0.0f }, // 哪个方向朝上 .fovy 45.0f, // 视野角度 .projection CAMERA_PERSPECTIVE, }; BeginMode3D(camera); DrawGrid(10, 1.0f); DrawModel(model, (Vector3){ 0, 0, 0 }, 1.0f, WHITE); EndMode3D();fovy值得改调 90 是广角场景更宽调 30 有近景压缩感。模型放错位置或大小不对改DrawModel的 position 和 scale 参数就行不用动相机。LoadModel(scene.obj)一行读外部模型OBJ、glTF、IQM、M3D 都能读贴图同理LoadTexture(texture.png)再挂到模型上。完整参照 examples/models/models_textured_cube.c图里两个带贴图的立方体就是这套 3D 模式画出来的地面网格是那行DrawGrid。踩坑排障4 个高频问题窗口打不开或者一启动就崩。显卡 OpenGL 版本太低raylib 默认走 3.3。先用 glxinfo 查版本不够的话编译时加-DGRAPHICSGRAPHICS_API_OPENGL_21降级。编译报找不到 raylib.h。没装开发包或者从源码构建后没指路径。装上带 -dev 的开发包或用-I和-L把头文件、库目录指过去。程序能跑但没有声音。代码没问题是系统缺音频开发库Linux 上装 libasound2-dev 重编即可。球速跟着帧率变。上面的写法每帧加固定量高刷屏上球会跑快。把增量乘上GetFrameTime()速度就和帧率解耦了。下一步去哪3 个可执行动作翻官方示例examples/ 目录有 200 多个示例每个都标了难度星级清单在 examples/examples_list.txt。先挑 examples/core/ 里的 ★☆☆☆ 编译跑一遍读完再改比干看代码快。抄项目模板projects/CMake/ 有现成 CMake 工程projects/CodeBlocks/ 等也有对应 IDE 模板复制一份改名就能开工构建系统零研究成本。做一轮定向练习先用纯形状 碰撞判断做一个 2D 贪吃蛇再顺手加LoadModel和音频常用 API 这一轮就过了一遍。raylib 没有编辑器没有场景系统默认单窗口每行逻辑都得自己写。但把这 3 步跑一遍你就知道游戏是一帧一帧画出来的之后换更重的引擎也不会心里没底。花一个下午照上面的步骤跑一遍就知道这库适不适合你。【免费下载链接】raylibA simple and easy-to-use library to enjoy videogames programming项目地址: https://gitcode.com/GitHub_Trending/ra/raylib创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考