快速开始
创建你的第一个 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