1个不稳定版本
0.1.0 | 2022年3月1日 |
---|
#1028 in 图形API
660KB
2K SLoC
e2
WGPU的轻量级2D渲染工具箱
它做什么?
e2让使用WGPU进行2D游戏渲染变得更加容易。它提供简化资源创建和加载、文本渲染、批处理渲染、精灵渲染等工具。
如果我只想使用X功能,其他都不用呢?
e2的API设计就是为了支持这一点。e2中的几乎所有类型都可以从现有的WGPU句柄构建。每件事都有出口。
它处理物理、音频等吗?
不,我们也没有计划支持这些功能。e2仅用于渲染。
它能做3D吗?
使用内置的渲染器不行,但你可以使用e2创建自己的3D渲染器。
为了更好地了解e2的确切功能,请查看示例。但简而言之
let cx = e2::Context::new(&window, wgpu::Backends::PRIMARY);
cx.configure_surface(width, height, wgpu::PresentMode::Mailbox);
let mesh_pipe = e2::MeshRenderPipeline::new();
let mut renderer = e2::SpriteRenderer::new(&cx, &mesh_pipe);
let sampler = e2::SimleSampler::linear_clamp().create(&cx);
let tile = e2::ImageTexture::from_path("tile.png", true)?.create(&cx);
loop {
let swapchain = cx.next_frame().unwrap();
let view = swapchain.texture.create_view(&Default::default());
let mut frame = e2::Frame::new(&cx);
renderer.free();
{
let mut pass = e2::SimpleRenderPass {
target: &view,
resolve: None,
clear: Some(e2::Color::BLACK),
depth_stencil: None,
}
.begin(&mut frame);
mesh_pipe.bind(&mut pass, &mut renderer);
renderer.set_matrix(glam::Mat4::orthographic_rh(0., width as _, height as _, 0., 0., 1.));
renderer.bind_sampler(&cx, &mut pass, &sampler);
renderer.draw(&cx, &mut pass, &tile, e2::Rect::new(10., 10., 50., 50.), 0.);
}
frame.submit(&cx);
swapchain.present();
}
依赖项
~21–34MB
~390K SLoC