glbinding
Open-Source Vulkan C++ API
Our great sponsors
glbinding | Open-Source Vulkan C++ API | |
---|---|---|
3 | 36 | |
821 | 2,888 | |
0.5% | 1.6% | |
4.1 | 9.1 | |
about 1 month ago | 7 days ago | |
C++ | C++ | |
MIT License | Apache License 2.0 |
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.
glbinding
-
Low-level OpenGL abstractions
You should checkout glbinding, it might give you some ideas for your own wrapper.
-
Thriving in a Crowded and Changing World: C++ 2006–2020 [pdf]
I have based my career on top of C++/backend/soft-real time systems.
I still have to read the full paper, thanks for the post!
Many people rant about C++, but, IMHO, overall, taking into account ecosystem, tools, etc. C++ stands as an almost unbeatable technology when you put everything together. It has quirks, asymmetries and all of that.
But since C++11 it is nicer to use and all the standards after it have been improving on it: generic lambdas, structured bindings, string non-template parameters, constexpr and consteval... it is amazing what you can do with C++ that is difficult or almost impossible to do with other languages.
On the missing pieces I would mention that you need to use macros to have some kind of reflection for members and pattern matching and networking would be really nice to have.
Modules are still an experiment implementation-wise, but hey, they will improve on the side of hiding implementation details by a big margin.
As for the ecosystem, nowadays you have CMake (whose language sucks badly) and Meson. Together with Conan things have improved a lot since I started coding in around 2001.
Pack that with an IDE like CLion or Visual Studio + Resharper or lightweight IDE (Emacs + Lsp and the like) and you have an environment that is very competitive and whose code can be compiled almost anywhere. From ARM to x86, MIPS and even Webassembly.
That is why I think C++ is still the way to go if what you want is performance: you also have interfaces such as OpenCL/GL/Vulkan/SIMD libraries (though not C++ standard) where you can access hardware. Also, vendors and open source have things such as https://github.com/cginternals/glbinding
Open-Source Vulkan C++ API
-
what math is required?
It might be useful to maybe look at the Vulkan.hpp examples since you can do the same in about 200 lines of code. https://github.com/KhronosGroup/Vulkan-Hpp/blob/main/samples/15_DrawCube/15_DrawCube.cpp
-
An idea to ease wrapping C libraries in C++.
Even auto-generated c++ wrappers like vulkan-hpp require lots of manual maintenance.
-
Anybody know why V-EZ has not been updated in 5 years?
Ultimately I went with vulkan.hpp RAII bindings, even though that way also has some learning curve and I couldn't find any documentation other than the RAII programming guide. It's great for getting started, but could use a complementary auto-generated API doc. There are also decent programming samples, which really suck for getting started, but otherwise do a good job of presenting concepts they focus on. Putting the available resources together I was able to get a project going in two weekends.
-
Recommendations on how to start a small Vulkan project
Or the vulkan.hpp RAII samples would be a good place?
-
What's the most hilarious use of operator overloading you've seen?
For a real-life example: consider the vk::raii namespace of Vulkan-Hpp, where the developers have posted examples. The vk::raii::su namespace has a bunch of free functions that one might think are associated with a Vulkan instance/object (in fact, the Vulkan Tutorial does implement them as member functions), but they are much nicer when used as pure functions. It keeps the class/struct definition itself nice and clean.
-
CLion vs VSCode in 2023 for C++
VS 2022 has seen a massive increase in performance especially after its move to 64-bit. It lints even the largest headers (ahem, Vulkan-Hpp) in a matter of seconds whereas CLion just chokes and crashes.
- Cross platform low level graphics API suitable for game development?
-
std::string_view, std::string, char const*, and char const* const*
So I am attempting to follow the Vulkan Tutorial, but I am trying to use decidedly more C++ than the tutorial suggests, by using the Vulkan-Hpp C++ bindings and the vk::raii classes, in particular.
-
I put together this compute pipeline example using the C++ RAII interface. Perhaps other beginners could learn from it, and any code reviews/comments would be welcome.
Its literally a few kb: https://github.com/KhronosGroup/Vulkan-Hpp/tree/master/vulkan Why on earth are you downloading all the samples and what not? Just use the hpp files and be done with it. SMH
-
Ask HN: How I get a job that uses C?
All the current major game engines are C++. C hasn't been widely used since the Quake 3 days.
While yes the Vulkan & OpenGL APIs are pure C, that's very, very little of what you actually code against. You very quickly abstract that or use a middleware like bgfx or whatever. In the case of Vulkan while the spec API is C, there's first-class C++ wrappers/bindings provided as well: https://github.com/KhronosGroup/Vulkan-Hpp
And other than Vulkan & OpenGL, you'll find that most other APIs/libraries in the space are C++, not C. Valve's libraries are C++. Dear ImGui is C++. Bullet & PhysX are C++. Microsoft's glTF SDK is C++. etc...
You can argue endlessly about how "true C++" those all are or if they're just "C with namespaces" but that's largely irrelevant - they aren't C and they need a C++ compiler.
What are some alternatives?
Ogre 3D - scene-oriented, flexible 3D engine (C++, Python, C#, Java)
GLFW - A multi-platform library for OpenGL, OpenGL ES, Vulkan, window and input
Skia - Skia is a complete 2D graphic library for drawing Text, Geometries, and Images.
urho3d - Game engine
Irrlicht - An automatically updated mirror of the Irrlicht SVN repository on sourceforge
OpenVDB - OpenVDB - Sparse volume data structure and tools
bgfx - Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.
OpenSubdiv - An Open-Source subdivision surface library.
DirectXTK - The DirectX Tool Kit (aka DirectXTK) is a collection of helper classes for writing DirectX 11.x code in C++
OpenSceneGraph - OpenSceneGraph git repository
magnum - Lightweight and modular C++11 graphics middleware for games and data visualization