尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

不碰OpenGL,10分钟跑通raylib简单跨平台游戏窗口

不碰OpenGL,10分钟跑通raylib简单跨平台游戏窗口 不碰OpenGL10分钟跑通raylib简单跨平台游戏窗口【免费下载链接】raylibA simple and easy-to-use library to enjoy videogames programming项目地址: https://gitcode.com/GitHub_Trending/ra/raylib如果你写过几次想做个小游戏、却卡在图形环境配置上的尝试raylib游戏开发库就是冲这个场景来的它面向不想碰引擎API的C开发者把窗口、绘制、输入、声音全部封装成几百个直白的函数大多数情况下10分钟内就能从零走到一个会动的窗口。 raylib凭什么让你省事这一节回答它和别的图形库比到底帮你省了哪三件事看完你再决定要不要投入时间。最核心的一点raylib零外部依赖。它用到的第三方库——窗口系统、音频解码、图像加载、字体光栅化——全部收在 src/external/ 目录里。可以把它理解成一个自带工具带的脚手架搬进去就能开工机器上不用额外装任何系统图形库这是它跨平台编译省事的第一原因。第二它是纯CC99没有构建系统魔法。#include raylib.h之后直接写函数名基本就是操作指令DrawCircle是画圆LoadSound是加载声音WindowShouldClose是检查是否该退出。会读C就能读API。第三一份代码跑多个平台Windows、Linux、macOS、树莓派、Android、HTML5 都有官方构建验证游戏代码不动只换构建参数。也要说清楚代价默认单窗口、单OpenGL上下文没有可视化编辑器文本绘制不支持RTL、连字和emoji。raylib是刻意把自己做小的这不是缺陷清单是设计取向。️ 怎么从空机器编译出第一个窗口这一节走完你的机器上应该有一个白色窗口亮着中途任何一步卡住直接跳到后面容易踩的坑一节。大多数发行版和macOS的包管理器都有可用版本第一次上手推荐走这条路一行命令装完# LinuxDebian/Ubuntu sudo apt install libraylib-devmacOS上对应的是brew install raylib。Arch、Fedora等其他发行版和Windows上也有包可装想要最新功能的源码编译一条命令git clone https://gitcode.com/GitHub_Trending/ra/raylib然后按仓库里 projects/CMake/ 的模板构建不需要额外配置。装好后写一个first.c。这段代码的作用创建一个800×450的窗口每帧把屏幕清成白色并画一行字按ESC或点关闭按钮时退出。#include raylib.h int main(void) { InitWindow(800, 450, my first raylib window); SetTargetFPS(60); while (!WindowShouldClose()) { BeginDrawing(); ClearBackground(RAYWHITE); DrawText(hello raylib, 360, 210, 20, LIGHTGRAY); EndDrawing(); } CloseWindow(); return 0; }接着编译并运行Windows下用MinGW时命令相同输出文件名改成first.exe即可# Linux / macOS gcc first.c -o first -lraylib ./first你应该看到一个白色窗口中间一行灰色文字关掉它没有任何报错就说明环境通了。 拿raylib到底能做什么这一节按你想做的事分四块2D绘制、3D场景、声音、输入每块都只需要几行代码。2D用键盘移动一个球2D绘制API全是DrawXxx参数就是坐标和颜色没有图层和场景图的概念。下面这段摘自examples/core/core_input_keys.c能让一个圆球跟着方向键走Vector2 pos { 400, 225 }; if (IsKeyDown(KEY_RIGHT)) pos.x 2.0f; if (IsKeyDown(KEY_LEFT)) pos.x - 2.0f; BeginDrawing(); ClearBackground(RAYWHITE); DrawCircleV(pos, 50, RED); EndDrawing();运行后球会跟着方向键移动鼠标同理IsMouseButtonPressed判断点击GetMousePosition取坐标手感上和你写过的任何游戏框架一致。3D用相机跑一个场景3D的入口就两行BeginMode3D(camera)和EndMode3D()中间画三维几何体它们会按你给的相机做投影Camera3D cam { 0 }; cam.position (Vector3){ 10.0f, 10.0f, 10.0f }; cam.target (Vector3){ 0.0f, 0.0f, 0.0f }; cam.up (Vector3){ 0.0f, 1.0f, 0.0f }; cam.fovy 45.0f; BeginMode3D(cam); DrawCube((Vector3){ 0.0f, 0.0f, 0.0f }, 2.0f, 2.0f, 2.0f, RED); DrawGrid(10, 1.0f); EndMode3D();窗口里你会看到一个红色立方体和地面网格。glTF、IQM、M3D格式的模型用LoadModel加载骨骼动画也有现成接口examples/models/里有一整套可以对着抄的演示。声音一个文件一次调用播出来音频系统的顺序是固定的先InitAudioDevice()初始化设备LoadSound()加载文件WAV、OGG、MP3、FLAC、MOD等格式都能读PlaySound()触发退出前CloseAudioDevice()释放。examples/audio/从简单播放到实时频谱可视化有一整排示例其中 audio_sound_loading 的主循环不到四十行值得直接拷出来改。 raylib编译报错和没声音的常见处理办法这一节把最常见的四种症状按看到什么→跑哪条命令列出来对症就行。编译报raylib.h: No such file or directory—— 头文件没装上sudo apt install libraylib-dev一条解决其他发行版找带-devel后缀的包名。链接报cannot find -lraylib—— 只装了运行时库换成-dev/-devel变体的包名重装。老显卡启动即崩溃或白屏—— 多数是OpenGL版本不够。先用glxinfo | grep OpenGL version看本机版本源码编译时用cmake .. -DOPENGL_VERSION2.1降到2.1。声音播不出来—— 常见原因是缺音频后端Debian系先sudo apt install libasound2-dev再重新编译raylib。 想再往深走一步去哪里看当示例不再够用下面三个方向通常是下一步入口路径都在仓库里不展开讲。着色器后处理、卡通渲染、光线步进examples/shaders/ 里有全套可运行demo任何模型都可以挂着色器材质。物理raylib本身不带物理引擎examples/shapes/里有单球物理演示复杂场景通常要自己接一个专门的物理库。Web部署用Emscripten把同一份C代码编成WebAssembly浏览器里直接打开平台层代码在src/platforms/rcore_web_emscripten.c。API参考就在 src/raylib.h 的注释里函数名直观到多数情况不用查文档。今晚就能动手的四步四个小动作每项不超过十分钟做完你就有一台随时能写小游戏的机器。把本文的 first.c 在自己机器上装好raylib并跑起来在 first.c 里加一个跟随鼠标的圆核心就一行 GetMousePosition把 examples/core/ 和 examples/textures/ 各打开一个例子读一遍故意触发一次上面的坑熟悉报错信息长什么样raylib的设计哲学是把库做小把思考空间留给游戏逻辑本身。这四步走完写一个小游戏的门槛就只剩坐下来开始写这一件事。【免费下载链接】raylibA simple and easy-to-use library to enjoy videogames programming项目地址: https://gitcode.com/GitHub_Trending/ra/raylib创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表