diff options
Diffstat (limited to 'raylib.html.markdown')
| -rw-r--r-- | raylib.html.markdown | 146 | 
1 files changed, 146 insertions, 0 deletions
| diff --git a/raylib.html.markdown b/raylib.html.markdown new file mode 100644 index 00000000..0afc6e03 --- /dev/null +++ b/raylib.html.markdown @@ -0,0 +1,146 @@ +--- +category: tool +tool: raylib +filename: learnraylib.c +contributors: +    - ["Nikolas Wipper", "https://notnik.cc"] +--- + +**raylib** is a cross-platform easy-to-use graphics library, built around +OpenGL 1.1, 2.1, 3.3 and OpenGL ES 2.0. Even though it is written in C +it has bindings to over 50 different languages. This tutorial will use C, +more specifically C99. + +```c +#include <raylib.h> + +int main(void) +{ +    const int screenWidth = 800; +    const int screenHeight = 450; + +    // Before initialising raylib we can set configuration flags +    SetConfigFlags(FLAG_MSAA_4X_HINT | FLAG_VSYNC_HINT); + +    // raylib doesn't require us to store any instance structures +    // At the moment raylib can handle only one window at a time +    InitWindow(screenWidth, screenHeight, "MyWindow"); + +    // Set our game to run at 60 frames-per-second +    SetTargetFPS(60); + +    // Set a key that closes the window +    // Could be 0 for no key +    SetExitKey(KEY_DELETE); + +    // raylib defines two types of cameras: Camera3D and Camera2D +    // Camera is a typedef for 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 supports loading of models, animations, images and sounds +    // from various different file formats +    Model myModel = LoadModel("my_model.obj"); +    Font someFont = LoadFont("some_font.ttf"); + +    // Creates a 100x100 render texture +    RenderTexture renderTexture = LoadRenderTexture(100, 100); + +    // WindowShouldClose checks if the user is closing the window +    // This might happen using a shortcut, window controls +    // or the key we set earlier +    while (!WindowShouldClose()) +    { + +        // BeginDrawing needs to be called before any draw call +        BeginDrawing(); +        { + +            // Sets the background to a certain color +            ClearBackground(BLACK); + +            if (IsKeyDown(KEY_SPACE)) +                DrawCircle(400, 400, 30, GREEN); + +            // Simple draw text +            DrawText("Congrats! You created your first window!", +                     190, // x +                     200, // y +                     20,  // font size +                     LIGHTGRAY +            ); + +            // For most functions there are several versions +            // These are usually postfixed with Ex, Pro, V +            // or sometimes Rec, Wires (only for 3D), Lines (only for 2D) +            DrawTextEx(someFont, +                       "Text in another font", +                       (Vector2) {10, 10}, +                       20, // font size +                       2,  // spacing +                       LIGHTGRAY); + +            // Required for drawing 3D, has 2D equivalent +            BeginMode3D(camera); +            { + +                DrawCube((Vector3) {0.0f, 0.0f, 3.0f}, +                         1.0f, 1.0f, 1.0f, RED); + +                // White tint when drawing will keep the original color +                DrawModel(myModel, (Vector3) {0.0f, 0.0f, 3.0f}, +                          1.0f, //Scale +                          WHITE); + +            } +            // End 3D mode so we can draw normally again +            EndMode3D(); + +            // Start drawing onto render texture +            BeginTextureMode(renderTexture); +            { + +                // It behaves the same as if we just called `BeginDrawing()` + +                ClearBackground(RAYWHITE); + +                BeginMode3D(camera); +                { + +                    DrawGrid(10, // Slices +                             1.0f // Spacing +                    ); + +                } +                EndMode3D(); + +            } +            EndTextureMode(); + +            // render textures have a Texture2D field +            DrawTexture(renderTexture.texture, 40, 378, BLUE); + +        } +        EndDrawing(); +    } + +    // Unloading loaded objects +    UnloadFont(someFont); +    UnloadModel(myModel); + +    // Close window and OpenGL context +    CloseWindow(); + +    return 0; +} + +``` + +## Further reading +raylib has some [great examples](https://www.raylib.com/examples.html) +If you don't like C check out the [raylib bindings](https://github.com/raysan5/raylib/blob/master/BINDINGS.md)
\ No newline at end of file | 
