1个不稳定版本

0.1.0 2022年3月1日

#1028 in 图形API

MIT/Apache

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