How to start with rendy?

Rendy is a bit of a rough start for a newbie. It gives you a lot of power, but it will take a lot more work to draw a cube rotating on screen than otherwise. Gfx-hal is a foundation of Rendy, so learning one or the other won't be exactly easier or harder. Vulkano is the api they follow, so understanding that will help you understand rendy and gfx-hal (as the question becomes: how did they name this vulkano functionality).

Still it's hard to understand what is the value on these things without context, which is why some people prefer top-down (start with a more specific problem and then specialize).

Here's a rundown of the layers:

  • The low-level graphics API: myriad of these, with different conventions limitations on systems, and ways of thinking of things.
  • gfx-hal: An API, based on Vulkan's API, that the different graphics API have converged into. It basically is Vulkan, just that it works on all machines, unlike Vulkan that works on some (not Mac for example). (Behind the scenes: the libraries that map the graphics APIs to gfx-hal).
  • rendy: A layer on top of gfx-hal that exposes some common and useful functionality that you always need when handling graphics. It doesn't hide the Vulkan-like api of gfx-hal as much as give you side-tools and helper functions that you will need at some point.
  • wgpu-rs: Built on top of wpgu which itself is built on top of rendy. It follows the WebGPU standard which is still kind of like Vulkan. Consider this as a side-level, it really is the same complexity as rendy.
  • amethyst: This one is a more complete and opinionated full game library. But it has a rendering engine that you can grab separately.

So, if you want to learn bottom-up I'd recommend to go Vulkan->how to do the same in gfx-hal->Reusing the cool functionality of rendy instead of rolling your own

If you'd rather learn top-down (I am not assuming how much high-level graphics experience you have, but it really helps to gain context), start with amethyst -> how amethist-rendy is plugged into amethyst -> how amethyst rendy renders things -> vulkano api + why gfx-hal and rendy work the way they do.

/r/rust Thread Parent