源代码下载: learnraylib-cn.c

raylib 是一个跨平台、易用的图形库,围绕OpenGL 1.1、2.1、3.3和OpenGL ES 2.0构建。
尽管它是用C语言编写的,却有超过50种不同语言的绑定。本教程将应用C语言。
更确切地说,是C99。

#include <raylib.h>int main(void){    const int screenWidth = 800;    const int screenHeight = 450;    // 在初始化raylib之前,能够设置标记位    SetConfigFlags(FLAG_MSAA_4X_HINT | FLAG_VSYNC_HINT);    // raylib并不要求咱们存储任何实例构造    // 目前raylib一次只能解决一个窗口    InitWindow(screenWidth, screenHeight, "MyWindow");    // 设置咱们的游戏以每秒60帧的速度运行    SetTargetFPS(60);    // 设置一个敞开窗口的键。    //能够是0,示意没有键    SetExitKey(KEY_DELETE);    // raylib定义了两种类型的相机。Camera3D和Camera2D    // Camera是Camera3D的一个类型化定义    Camera camera = {            .position = {0.0f, 0.0f, 0.0f},            .target   = {0.0f, 0.0f, 1.0f},            .up       = {0.0f, 1.0f, 0.0f},            .fovy     = 70.0f,            .type     = CAMERA_PERSPECTIVE    };    // raylib反对加载各种不同的文件格式的模型、动画、图像和声音。    Model myModel = LoadModel("my_model.obj");    Font someFont = LoadFont("some_font.ttf");    // 创立一个100x100的渲染纹理    RenderTexture renderTexture = LoadRenderTexture(100, 100);    // WindowShouldClose办法检查用户是否正在敞开窗口。    // 可能用的是快捷方式、窗口管制或之前设置的敞开窗口键    while (!WindowShouldClose())    {        // BeginDrawing办法要在任何绘图操作之前被调用。        BeginDrawing();        {            // 为背景设定某种色彩            ClearBackground(BLACK);            if (IsKeyDown(KEY_SPACE))                DrawCircle(400, 400, 30, GREEN);            // 简略地绘制文本            DrawText("Congrats! You created your first window!",                     190, // x                     200, // y                     20,  // 字体大小                     LIGHTGRAY            );            // 大多数函数都有几个版本            // 通常后缀为Ex, Pro, V            // 或者是Rec、Wires(仅实用于3D)、Lines(仅实用于2D)。            DrawTextEx(someFont,                       "Text in another font",                       (Vector2) {10, 10},                       20, // 字体大小                       2,  // 间距                       LIGHTGRAY);            // 绘制3D时须要,有2D的等价办法            BeginMode3D(camera);            {                DrawCube((Vector3) {0.0f, 0.0f, 3.0f},                         1.0f, 1.0f, 1.0f, RED);                // 绘图时的红色色调将放弃原来的色彩                DrawModel(myModel, (Vector3) {0.0f, 0.0f, 3.0f},                          1.0f, // 缩放                          WHITE);            }            // 完结3D模式,这样就能够再次一般绘图            EndMode3D();            // 开始在渲染纹理上绘图            BeginTextureMode(renderTexture);            {                // 它的行为与方才调用的`BeginDrawing()`办法雷同                ClearBackground(RAYWHITE);                BeginMode3D(camera);                {                    DrawGrid(10, // Slices                             1.0f // 间距                    );                }                EndMode3D();            }            EndTextureMode();            // 渲染有Texture2D字段的纹理            DrawTexture(renderTexture.texture, 40, 378, BLUE);        }        EndDrawing();    }    // 卸载已载入的对象    UnloadFont(someFont);    UnloadModel(myModel);    // 敞开窗口和OpenGL上下文    CloseWindow();    return 0;}

延长浏览

raylib有一些不错的例子
如果你不喜爱C语言你也能够看看raylib的其余语言绑定


有倡议?或者发现什么谬误?在Github上开一个issue,或者发动pull request!

原著Nikolas Wipper,并由0个好心人批改。
© 2022 Nikolas Wipper
Translated by: lzw-723
本作品采纳 CC BY-SA 3.0 协定进行许可。