Skip to content

Helper crate for gfx-hal to create and use meshes with vertex semantic

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

zakarumych/gfx-mesh

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Attention

This project is discontinued in favor of rendy.

gfx-mesh

Helper crate for gfx-hal to create and use meshes with vertex semantics.

Vertex semantics

Vertex formats usually has semantics attached to field names. This crate provides traits and types to have semantics explicitly defined on the type level.

Position, Normal, TexCoord etc. are attributes that have unambiguous semantics. Users can define their own attribute types by implementing the Attribute trait.

While the attribute type on its own is a trivial vertex format (with single attribute), complex vertex formats are created by composing attribute types.

The WithAttribute trait allows to get formatting info for individual attributes defined in a vertex format. The Query trait allows to get formatting info for several attributes at once.

VertexFormat queried from vertex formats can be used to build graphics pipelines and bind required vertex buffers from mesh to command buffer.

To define a custom vertex format type, the AsVertexFormat trait must be implemented providing a VertexFormat associated constant.

WithAttribute can be implemented also for all attributes and VertexFormat associated constant in AsVertexFormat can be defined more clearly utilizing WithAttribute implementation. Query is automatically implemented.

Mesh

Mesh is a collection of vertex buffers and optionally an index buffer together with vertex formats of the buffers and index type. Also there is a primitive type specified which defines how vertices form primitives (lines, triangles etc). To create instances of Mesh you need to use MeshBuilder.

  1. Fill MeshBuilder with typed vertex data.
  2. Provide the index data.
  3. Set the primitive type (Triangles list by default).
  4. Call MeshBuilder::build. It uses Factory from gfx-render to create buffers and upload data.

Here is your fresh new Mesh. Or an Error from gfx-render.

To bind vertex buffers to a command buffer use Mesh::bind with a sorted array of VertexFormats (the same that was used to setup the graphics pipeline).

About

Helper crate for gfx-hal to create and use meshes with vertex semantic

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages