diff options
| -rw-r--r-- | zh-cn/raylib-cn.html.markdown | 147 | 
1 files changed, 147 insertions, 0 deletions
| diff --git a/zh-cn/raylib-cn.html.markdown b/zh-cn/raylib-cn.html.markdown new file mode 100644 index 00000000..c88aa91e --- /dev/null +++ b/zh-cn/raylib-cn.html.markdown @@ -0,0 +1,147 @@ +--- +category: tool +tool: raylib +lang: zh-cn +filename: learnraylib-cn.c +contributors: +    - ["Nikolas Wipper", "https://notnik.cc"] +translators: +    - ["lzw-723", "https://github.com/lzw-723"] +--- + +**raylib** 是一个跨平台、易用的图形库,围绕OpenGL 1.1、2.1、3.3和OpenGL ES 2.0构建。 +虽然它是用C语言编写的,却有超过50种不同语言的绑定。本教程将使用C语言。 +更确切地说,是C99。 + +```c +#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有一些[不错的例子](https://www.raylib.com/examples.html) +如果你不喜欢C语言你也可以看看[raylib的其他语言绑定](https://github.com/raysan5/raylib/blob/master/BINDINGS.md) | 
