AnvilKitAnvilKit

快速开始

创建你的第一个 AnvilKit 项目

前置条件

  • Rust 1.70 或更高版本
  • 支持 Vulkan / Metal / DX12 的 GPU

设置

在 workspace 的 Cargo.toml 中添加依赖:

[dependencies]
anvilkit = { path = "../../crates/anvilkit" }

最小示例

AnvilKit 使用 AnvilKitApp::run() + GameCallbacks 模式。 应用运行器自动处理事件循环、输入转发和帧生命周期 — 你只需实现游戏所需的回调。

最简单的渲染方式是使用 Canvas2D

use anvilkit::prelude::*;
use anvilkit_app::{AnvilKitApp, GameCallbacks, GameConfig, GameContext};
use anvilkit_render::renderer::canvas2d::{Canvas2D, Canvas2DRenderer};

struct MyGame { renderer: Option<Canvas2DRenderer> }

impl GameCallbacks for MyGame {
    fn init(&mut self, ctx: &mut GameContext) {
        let device = ctx.render_app.render_device().unwrap();
        let format = ctx.render_app.surface_format().unwrap();
        self.renderer = Some(Canvas2DRenderer::new(device, format));
    }
    fn render(&mut self, ctx: &mut GameContext) {
        let Some(ref mut r) = self.renderer else { return };
        let Some(mut c) = Canvas2D::begin(ctx.render_app, r) else { return };
        c.clear([0.2, 0.2, 0.3, 1.0]);
        c.draw_rect(100.0, 100.0, 200.0, 50.0, [1.0, 0.5, 0.0, 1.0]);
        c.draw_text(110.0, 115.0, "Hello AnvilKit!", 24.0, [1.0, 1.0, 1.0, 1.0]);
        c.finish();
    }
}

fn main() {
    let mut app = App::new();
    app.add_plugins(DefaultPlugins::new().with_window(
        WindowConfig::new().with_title("Hello").with_size(640, 480),
    ));
    AnvilKitApp::run(GameConfig::new("Hello").with_size(640, 480), app, MyGame { renderer: None });
}

运行项目

cargo run -p my_game

下一步

目录