raylib:简单易用的视频游戏编程库

719 阅读4分钟

raylib:简单易用的视频游戏编程库

raylib是一个简单易用的库,让您享受视频游戏编程。

raylib受到了Borland BGI图形库和XNA框架的高度启发,特别适合原型设计、工具开发、图形应用程序、嵌入式系统和教育。

冒险者须知: raylib是一个编程库,让你享受视频游戏编程;没有花哨的界面,没有可视化辅助,没有调试按钮......仅仅是以最纯粹的斯巴达程序员方式编写代码。

准备学习了吗?跳到代码示例!

特性

  • 没有外部依赖,所有需要的库都被捆绑进raylib中。
  • 支持多个平台:Windows、Linux、MacOS、RPI、Android、HTML5...等!
  • 用纯C代码编写 (C99),使用PascalCase/camelCase命名法。
  • 使用OpenGL实现硬件加速(1.1, 2.1, 3.3, 4.3, ES 2.0, ES 3.0)。
  • 独特的OpenGL抽象层(可作为独立模块使用):rlgl
  • 支持多种字体格式(TTF、OTF、FNT、BDF、精灵字体)。
  • 支持多种纹理格式,包括压缩格式(DXT、ETC、ASTC)。
  • 全3D支持,包括3D形状、模型、广告牌、高程图等。
  • 灵活的材料系统,支持经典贴图和PBR贴图
  • 支持动画3D模型(骨骼动画)(IQM, M3D, glTF)。
  • 支持着色器,包括模型着色器和后处理着色器。
  • 强大的数学模块,支持向量、矩阵和四元数运算:raymath
  • 支持音频加载和播放,具有流媒体支持(WAV、QOA、OGG、MP3、FLAC、XM、MOD)。
  • 支持VR立体渲染,可以配置HMD设备参数。
  • 拥有巨大的示例集合,包含超过+140个代码示例!
  • 提供对+70种编程语言的绑定!
  • 免费和开源

基本示例

以下是一个基本的raylib示例,它创建一个窗口,并在屏幕中间绘制文本“恭喜!您创建了您的第一扇窗户!”。

可以在这里观看此示例的实时运行

#include "raylib.h"

int main(void)
{
    InitWindow(800, 450, "raylib [core] example - basic window");

    while (!WindowShouldClose())
    {
        BeginDrawing();
            ClearBackground(RAYWHITE);
            DrawText("Congrats! You created your first window!", 190, 200, 20, LIGHTGRAY);
        EndDrawing();
    }

    CloseWindow();

    return 0;
}

构建和安装

raylib的二进制版本已在Windows、Linux、macOS、Android和HTML5上的Github Releases页面提供。

raylib也可以通过多个包管理器在多个操作系统上获取。

在多个平台上安装和构建raylib

raylib Wiki包含详细的构建和使用说明,适用于多个平台。

请注意,Wiki是开放编辑的,如果在构建raylib时发现问题,可以随时编辑Wiki或打开相关问题。

用多个IDE设置raylib

raylib是在Windows平台上使用Notepad++MinGW GCC编译器开发的,但也可以在其他平台的多种IDE中使用。

项目目录包含多个现成的项目模板,用于构建raylib和代码示例,可与多种IDE一起使用。

请注意,支持许多IDE,某些提供的模板可能需要一些审查,因此如果您发现任何模板存在问题或认为可以改进,请随时发送PR或打开相关问题。

学习和文档

raylib设计为以示例作为主要参考进行学习。没有标准API文档,但有一个速查表,其中包含库中所有函数的简短描述、输入参数和结果值名称,应该足够直观以理解每个函数的工作原理。

raylib设计的相关附加文档可以在raylib GitHub Wiki上找到。以下是相关链接:

类似项目介绍

raylib是一个强大的视频游戏编程库,然而还有一些其他开源项目也具备类似的功能。

  1. SDL (Simple DirectMedia Layer) :

    • SDL是一个跨平台的多媒体库,用于访问音频、键盘、鼠标、游戏手柄、3D硬件图形的低级别功能。它被广泛用于游戏开发和媒体播放。
  2. SFML (Simple and Fast Multimedia Library) :

    • SFML是一个提供简单接口的多媒体库,支持2D图形、音频、网络等,非常适合快速开发视频游戏和图形程序。
  3. Allegro:

    • Allegro是一个为视频游戏编程而设计的跨平台C++库,提供图形、音频、输入等功能,使得游戏开发更加简便。

这些库同样具备强大的功能和丰富的社区支持,开发者可根据自身需求选择适合的游戏编程库。