cgltf VS learn-wgpu

Compare cgltf vs learn-wgpu and see what are their differences.


:diamond_shape_with_a_dot_inside: Single-file glTF 2.0 loader and writer written in C99 (by jkuhlmann)


Guide for using gfx-rs's wgpu library. (by sotrh)
Our great sponsors
  • Mergify - Tired of breaking your main and manually rebasing outdated pull requests?
  • InfluxDB - Collect and Analyze Billions of Data Points in Real Time
  • SonarQube - Static code analysis for 29 languages.
cgltf learn-wgpu
9 67
1,234 1,228
- -
0.0 0.0
5 days ago 12 days ago
C Rust
MIT License MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.


Posts with mentions or reviews of cgltf. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-06-20.


Posts with mentions or reviews of learn-wgpu. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-06-29.
  • Trying to learn wgpu
    2 projects | /r/rust | 29 Jun 2023
    If you haven't seen it: is a good introduction that will explain most of what you asked, then can refer to rend3d or bevys renderer to see how a render graph works.
  • WebGPU with C++ ?
    5 projects | /r/webgpu | 29 Jun 2023
    I suggest looking into Rust for developing WASM applications with WebGPU, since Rust has in my experience way better support for WASM than c++. wgpu is the implementation of the WebGPU standard in rust and is very well documented. It also isn't just a backend for WebGPU but also for OpenGL, WebGL, Vulkan, Metal and DirectX, so you application can run on every device. There is a great tutorial series here.
  • What is Rust's potential in game development?
    12 projects | /r/rust | 15 Jun 2023
    So my advice would be to try Bevy, but don't force it if it doesn't work for you. If you're interested in more "low-level" graphics programming or you have some experience in that area, then learning wgpu is another thing you can do (and if you start doing advanced things with Bevy, you will want to be familiar with wgpu anyway)
  • Wgpu Questions: Vertex Buffers
    2 projects | /r/rust | 5 Jun 2023
    When should I create encoders and render passes? I'm following these WebGPU tutorials here, and it creates both an encoder and render pass from that encoder on a per-frame-basis. Can it be expensive to create these each frame? Should I at least cache the encoder to somewhere more persistent, so that I'm not creating a new one each frame? It looks like creating render passes need to be created each frame because they need to be dropped from their scopes in order to finish the render pass before submitting the queue.
  • Custom Intermediate buffers/textures for shaders
    3 projects | /r/godot | 23 May 2023
    For context, I've got rudimentary knowledge of how to work with shaders through, and
  • Bevy and WebGPU
    8 projects | | 18 May 2023
    * I've left this for last, but the explicit binding model sucks. WebGPU is fairly high level, but keeping explicit binding instead of requiring binding arrays is awful. Every time you want to add a texture/buffer/etc to your shader, you need to modify the bind group layout, modify the bind group, and then modify the shader, and keep those definitions in sync. When you have multiple pipelines, bind groups, shaders, and modular systems that only need certain resources under different conditions or certain parts of different shaders, it's just awful to keep track of. The ergonomics are terrible. I wish WebGPU would've required binding arrays and just accepted losing support for some older devices. In Bevy we plan to write an abstraction that acts more like binding arrays and falls back to explicit bindings where needed, but that's still a lot of work.

    Overall, I generally think wgpu was/is the right choice for Bevy. The ergonomics could still use work, we leave performance on the table, we don't get all the advanced and new features, and the growing pains were (and still are, to a lesser degree) real. But we still get better ergonomics compared to other options, WebGPU support for browsers, 1 rendering backend vs at least 3 (Vulkan/Metal/WebGL2), and the rest of the issues are fixable over time and with more work done on both Bevy's side and the library and tooling side.

    Sometimes I wish we went with just Vulkan+Metal and could drop down to lower level stuff, get access to new features, and just generally not have to deal with extra layers and immature tooling. But I still think it's the right choice for the project overall. Discalimer: just my own opinion, I don't represent the project.

    > Also, have you thought of teaming up with anyone who is explicitly teaching webgpu / wgsl? Seeing someone create a rust perspective course on learning webgpu could be nice.

    Learn wgpu ( provides a nice intro to WebGPU/WGSL. I don't think there's really anything Bevy specifically would be able to provide. Once you wrap your head around the APIs themselves, generally the hard part of graphics programming is dealing with the boilerplate, and the actual 3D rendering techniques themselves irrespective of the API you write in.

    That said, there's a few improvements I've though about contributing to learn wgpu to cover the more advanced side of things (compute shaders, storage resources, alignment rules, etc), but I haven't had time lately.

  • [Rust_Gamedev] WGSL est-il un bon choix?
    2 projects | /r/enfrancais | 4 May 2023
  • Noob Question: Why Am I Getting The Error "The pipeline layout, associated with the current compute pipeline, contains a bind group layout at index 0 which is incompatible with the bind group layout associated with the bind group at 0"?
    3 projects | /r/wgpu | 29 Apr 2023
    A little bit of context: I am working on translating / to a wgpu based implementation. So far, I have adapter the triangle example by adding a buffer that can be read to and written to by both the render shader and a compute shader. However, when I try to initialize the values in the buffer inside of a compute shader ( which I know can be done on the CPU as well, but I need to write to the buffer on the GPU eventually ), I get the error "The pipeline layout, associated with the current compute pipeline, contains a bind group layout at index 0 which is incompatible with the bind group layout associated with the bind group at 0". The only reference of this error I saw online was, where the buffer was not initialized before it the compute shader attempted to write to it, however I don't think that is the case with mine.
  • Is Cpp practical for browser based gaming ?
    2 projects | /r/gamedev | 28 Apr 2023
    Here’s a good tutorial that I followed to get things workings:
  • Hey Rustaceans! Got a question? Ask here (12/2023)!
    14 projects | /r/rust | 20 Mar 2023

What are some alternatives?

When comparing cgltf and learn-wgpu you can also consider the following projects:

tinygltf - Header only C++11 tiny glTF 2.0 library

ash - Vulkan bindings for Rust

assimp - The official Open-Asset-Importer-Library Repository. Loads 40+ 3D-file-formats into one unified and clean data structure.

glium - Safe OpenGL wrapper for the Rust language.

FBX2glTF - A command-line tool for the conversion of 3D model assets on the FBX file format to the glTF file format.

gdx-gltf - GLTF 2.0 3D format support and PBR shader implementation for LibGDX

winit - Window handling library in pure Rust

SharpGLTF - glTF reader and writer for .NET Standard

SDL - Simple Directmedia Layer

wgsl-mode - Emacs syntax highlighting for the WebGPU Shading Language (WGSL)

egui - egui: an easy-to-use immediate mode GUI in Rust that runs on both web and native

luminance-rs - Type-safe, type-level and stateless Rust graphics framework