在许多示例中,突破仅使用矩形,有加载精灵的示例,有加载 3D 网格的示例。在二维中,我想绘制一个三角形(或其他多边形),但我无法通过文档弄清楚它。
小智 6
不确定这是否仍然相关,但今天我在这里遇到了同样的问题,那就是我如何绘制简单的三角形
fn create_triangle() -> Mesh {
let mut mesh = Mesh::new(PrimitiveTopology::TriangleList);
mesh.set_attribute(
Mesh::ATTRIBUTE_POSITION,
vec![[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [1.0, 1.0, 0.0]],
);
mesh.set_attribute(Mesh::ATTRIBUTE_COLOR, vec![[0.0, 0.0, 0.0, 1.0]; 3]);
mesh.set_indices(Some(Indices::U32(vec![0, 1, 2])));
mesh
}
Run Code Online (Sandbox Code Playgroud)
这将创建一个三角形网格。对我来说,棘手的部分是弄清楚默认情况下三角形是透明绘制的,并且应该为顶点设置阿尔法值。稍后您可以在系统中使用此网格生成函数,如下所示:
fn setup(
mut commands: Commands,
mut meshes: ResMut<Assets<Mesh>>,
mut materials: ResMut<Assets<ColorMaterial>>
) {
commands.spawn_bundle(OrthographicCameraBundle::new_2d());
commands.spawn_bundle(MaterialMesh2dBundle {
mesh: meshes.add(create_triangle()).into(),
transform: Transform::default().with_scale(Vec3::splat(128.)),
material: materials.add(ColorMaterial::from(Color::PURPLE)),
..Default::default()
});
Run Code Online (Sandbox Code Playgroud)
}